win32上的HTTP客户端示例

时间:2009-07-10 05:30:11

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

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

我是win32编程的新手,什么是api和库win32平台提供的HTTP发送和接收请求?我在VS 2005中使用Windows XP。

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

5 个答案:

答案 0 :(得分:11)

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

HTTP Server API“使应用程序无需使用Microsoft Internet Information Server(IIS)即可通过HTTP进行通信”

答案 1 :(得分:7)

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

答案 2 :(得分: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();

答案 3 :(得分:2)

Boost Asio是一个很好的同步/异步库,它拥有HTTP服务器/客户端所需的一切。它在HTTP服务器和相关客户端上有一些广泛的例子。现在,如果您对C ++不熟悉,那么这个库可能有点神秘。如果你想从头开始,你可以随时查看MSDN。

答案 4 :(得分:0)

这是一个例子

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

用于POSIX和Winsock套接字的C ++光包装器

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