【问题标题】:HTTP client example on win32win32 上的 HTTP 客户端示例
【发布时间】:2010-11-09 14:55:04
【问题描述】:

我想在win32平台上开发一个HTTP例子,是异步的。

我是win32编程新手,win32平台为HTTP发送和接收请求提供了哪些api和库?我正在使用带有 VS 2005 的 Windows XP。

如果有任何示例,请提供指向它的链接。

【问题讨论】:

    标签: c++ windows http asynchronous windows-xp


    【解决方案1】:

    Window HTTP Services“为开发者提供一个 HTTP 客户端应用程序编程接口 (API),以通过 HTTP 协议向其他 HTTP 服务器发送请求。”

    HTTP Server API“使应用程序能够在不使用 Microsoft Internet 信息服务器 (IIS) 的情况下通过 HTTP 进行通信”

    【讨论】:

    • 感谢您的链接和信息,我想这对我来说会更有用
    【解决方案2】:

    您可以使用 WinHTTP 库。 Here 是异步完成的示例。

    【讨论】:

      【解决方案3】:

      Boost Asio 是一个不错的同步/异步库,它拥有 HTTP 服务器/客户端所需的一切。它有一些关于 HTTP 服务器和相关客户端的广泛示例。现在,如果您通常是 C++ 新手,那么这个库可能有点神秘。如果您想要更多从头开始的方法,您可以随时查看 MSDN。

      【讨论】:

      • boost.asio 提供了一种机制,让您可以手动制定自己的 http 请求; windows http服务为你封装协议。
      【解决方案4】:

      一般来说,我会推荐一些跨平台的东西,比如 cURL、POCO、Qt 或 Asio(非常现代且不错)。但是,这里是一个使用 IXMLHTTPRequest 的 Windows 示例:

      // TODO: error handling
      
      #include <atlbase.h>
      #include <msxml6.h>
      
      HRESULT hr;
      CComPtr<IXMLHTTPRequest> request;
      
      hr = request.CoCreateInstance(CLSID_XMLHTTP60);
      hr = request->open(
          _bstr_t("GET"),
          _bstr_t("https://www.google.com/images/srpr/logo11w.png"),
          _variant_t(VARIANT_FALSE),
          _variant_t(),
          _variant_t());
      hr = request->send(_variant_t());
      
      // get status - 200 if succuss
      long status;
      hr = request->get_status(&status);
      
      // load image data (if url points to an image)
      VARIANT responseVariant;
      hr = request->get_responseStream(&responseVariant);
      IStream* stream = (IStream*)responseVariant.punkVal;
      CImage image = new CImage();
      image->Load(stream);
      stream->Release();
      

      【讨论】:

      【解决方案5】:

      这是一个例子

      https://github.com/pedro-vicente/lib_netsockets

      一个用于 POSIX 和 Winsock 套接字的 C++ 轻型包装器

      它使用 HTTP GET 从 Web 服务器检索文件,服务器和文件都是命令行参数。远程文件保存到本地副本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 1970-01-01
        • 2016-09-05
        • 1970-01-01
        • 2018-01-23
        • 1970-01-01
        • 2012-01-06
        相关资源
        最近更新 更多