HTTP Get Request in C++

HTTP Get Request in C++

本文关键字:C++ in Request Get HTTP      更新时间:2023-10-16

我需要发送一个HTTP GET请求到我的网站,然后获得页面的内容并解析它。我不喜欢使用libCURL这样的库,因为我希望最终的应用程序是完全独立的(这是引用个人经验,我可能是错的,但如果我记得客户端必须有某些动态链接库来运行libCURL库的应用程序),我在Visual Studio 2012中使用c++。

代码示例也很好。

当您不想使用外部库时,您将不得不自己实现HTTP。当你只需要基本的功能(直接下载文件,没有重定向,没有代理,没有cookie,没有身份验证,没有加密,没有压缩,没有其他诡计),这甚至不是那么难。

创建一个套接字,将其连接到web服务器的80端口,并发送以下字符串到服务器:

"GET /example.html HTTP/1.1rn"
"Host: www.example.comrn"
"rn"

从您连接的服务器请求文件www.example.com/example.html。

服务器将使用自己的HTTP响应头和数据(或错误描述)进行响应。

    大多数库都可以静态编译。当你使用一个静态库时,它被链接到你的可执行文件中,你不需要提供库的dll。也许这将有助于:攻略:创建和使用静态库(c++)
  1. 一些库可以是头文件的,或者在头文件的模式下使用:编译器将库拉入你的源代码。同样,不会为库生成dll。例如,您可以尝试让Asio和cpp-netlib在仅标头模式下为您工作。这里还有一个简单的http客户端示例,仅供Asio使用。
  2. 认为你可以使用WinINet或WinHTTP而不附带任何dll。

下面是一个简单的c++ GET请求代码

std::string GET(std::string url) {
    std::string cmd = "curl -s " + url;
    FILE *p = popen(cmd.c_str(), "r");
    char buffer[2];
    std::string body;
    if (!p) {
        return "Error";
    }
    while (fgets(buffer, sizeof(buffer), p)) {
        body += buffer;
    }
    return body;
}
使用:

std::string response = GET("https://example.com");
// Do actions with response

祝你好运!