C++ LibCurl 发送 HTTPS 请求

标签 c++ sockets ssl curl libcurl

我有一个插件我已经使用了很长一段时间,它基本上只是使用套接字来发送请求。问题是,当你在游戏服务器上使用插件时,你必须先在机器上登录 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/

相关文章:

c++ - C++ 中的指针函数参数复制和性能

java - Genymotion 与不同本地子网中的套接字通信

c++ - 理解函数指针

c++ - 使用 cblas_dgemv() 的矩阵 vector 积的结果不正确

c# - c# 两台电脑之间的通信

php - Telegram Bot SSL 错误 : SSL error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}

ssl - Apache2 SSL 证书/ key 不匹配

使用 https 重写 Apache 2.4 url

c++ - 如何输出浮点 vector 的 vector ?

python - 使用 select() 监听 tcp 和 udp 消息