我想在win32平台上开发一个HTTP示例,它是异步的。
我是win32编程的新手,什么是api和库win32平台提供的HTTP发送和接收请求?我在VS 2005中使用Windows XP。
如果有任何示例,请提供指向它的链接。
答案 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服务器检索文件,服务器和文件都是命令行参数。远程文件保存到本地副本。