我有一个插件我已经使用了很长一段时间,它基本上只是使用套接字来发送请求。问题是,当你在游戏服务器上使用插件时,你必须先在机器上登录 SteamCommunity.com 来存储 cookie。我想将它转换为 C++ 以通过首先使用 HTTPS 连接到站点来减轻该步骤。自从我使用 LibCurl 以来已经有很长一段时间了,我并没有太幸运地找到设置它所需的信息。
基本上我只是想知道我是否以正确的方式进行此操作,以及我需要使用哪些其他 CURLOPT_ 设置。
void InviteToGroup(const char *pszAuthID)
{
CURL *curl;
CURLcode res;
const char *szCommunityID = GetCommunityID(pszAuthID); // User's Steam Community ID
const char *szCookie = "76561198018111441%7C%7CC7D70E74A3F592F3E130CCF4CAACD4A7B9CAD993"; // Steam Community Login Cookie
const char *szInviter = "76561194018311441"; // Inviter's Steam Community ID
const char *szGroup = "103583791430784257"; // Group Steam Community ID
const char *request = new char[2048];
snprintf(request, 2047, "GET /actions/GroupInvite?type=groupInvite&inviter=%s&invitee=%s&group=%s HTTP/1.1\r\nHost: steamcommunity.com\r\nConnection: close\r\nCookie: steamLogin=%s\r\n\r\n", szInviter, szCommunityID, szGroup, szCookie);
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://www.steamcommunity.com");
curl_easy_setopt(curl, CURLOPT_USERPWD, "myusername:mypass");
// Attempt to Connect the Steam Community Server
res = curl_easy_perform(curl);
// Close the connection
curl_easy_cleanup(curl);
}
}
最佳答案
您似乎正在发送用户 header 并且可能需要 CURLOPT_HTTPHEADER。您应该使用 curl 的 slist 来创建它。
如果您想顺便用 C++ 而不是 C 来编写,您应该学会正确使用字符串。事实上,您不能写入 const char *,但使用带有“希望它足够大”缓冲区大小的 new 并不是您在 C++ 中构造字符串的方式。您可能希望使用 std::ostringstream 来创建一个类似的字符串。
关于C++ LibCurl 发送 HTTPS 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4240615/