我有一个插件,我已经使用了很长一段时间,它基本上只使用套接字发送请求。问题是,当你在游戏服务器上使用插件时,你必须先在机器上登录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);
}
}
答案 0 :(得分:0)
您似乎正在发送用户标头,可能需要CURLOPT_HTTPHEADER。您应该使用curl的slist来创建它。
如果你想用C ++而不是C语言编写,你应该学会正确使用字符串。因为它是你不能写入const char *,但是使用带有“希望它足够大”缓冲区大小的new并不是你在C ++中构造字符串的方式。您可能希望使用std :: ostringstream来创建类似于该字符串的字符串。