C ++ LibCurl для отправки запроса HTTPS - PullRequest
1 голос
/ 22 ноября 2010

У меня есть плагин, которым я пользуюсь в течение достаточно долгого времени, и он просто использует Sockets для отправки запроса.Проблема в том, что когда вы используете плагин на игровом сервере, вы должны сначала войти в SteamCommunity.com на компьютере, чтобы сохранить куки.Я хочу преобразовать его в 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);
    }
}

1 Ответ

0 голосов
/ 22 ноября 2010

Вы, похоже, отправляете заголовок пользователя и, вероятно, хотите CURLOPT_HTTPHEADER.Вы должны использовать curl's slist для создания этого.

Если вы хотите писать на C ++, а не на C, вы должны научиться правильно использовать строки.Так как вы не можете записать в const char *, но использование new с «надеюсь, что он достаточно большой» размер буфера - это не то, как вы строите строки в C ++.Возможно, вы захотите использовать std :: ostringstream для создания такой строки.

...