【问题标题】:HTTP Get Request in C++C++ 中的 HTTP 获取请求
【发布时间】:2012-12-22 16:35:03
【问题描述】:

我需要向我的站点发送一个 HTTP GET 请求,然后获取页面内容并对其进行解析。我宁愿不使用 libCURL 之类的库,因为我希望最终应用程序完全独立(这是从个人经验中引用的,我可能是错的,但如果我记得客户端必须有某些动态链接库才能使用 libCURL 运行应用程序库。),我在 Visual Studio 2012 中使用 C++。

代码示例也不错。

【问题讨论】:

  • 你是问winsock2怎么用?
  • 打开一个socket(),发送()你的请求,recv()你的答案..你已经尝试了什么?你被困在哪里了?我们能为您提供什么帮助?
  • 如果您不想处理分发 DLL,您始终可以静态链接 libcurl 而不是动态链接。
  • 你想使用 libCurl。如果可行,执行 HTTP 请求可能看起来微不足道,但如果您与正常情况有任何差异,那么事情就会很快发生。

标签: c++ http get


【解决方案1】:

当您不想使用外部库时,您必须自己实现 HTTP。当您只需要基本功能(直接下载文件、无重定向、无代理、无 cookie、无身份验证、无加密、无压缩、无其他恶作剧)时,这甚至不是那么难。

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

"GET /example.html HTTP/1.1\r\n"
"Host: www.example.com\r\n"
"\r\n"

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

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

【讨论】:

    【解决方案2】:
    1. 大多数库都可以静态编译。当您使用静态库时,它会链接到您的可执行文件中,您不必发送库的 dll。也许这会有所帮助:Walkthrough: Creating and Using a Static Library (C++)
    2. 某些库可以是仅头文件或在仅头文件模式下使用:编译器将库拉入您的源代码。同样,没有为库生成 dll。例如,您可以尝试 getting Asiocpp-netlib 为您在仅标头模式下工作。还有一个简单的 http 客户端示例,仅适用于某处的 Asio。
    3. 认为您可以使用 WinINetWinHTTP 而无需提供任何 DLL。

    【讨论】:

    • WinInet/WinHTTP DLL 已安装在操作系统中。您不需要自己部署 DLL,但它们仍然是 DLL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多