C++:从URL获取HTTP状态代码

问题描述:

我正在研究一个应用程序,其中 - 我必须打一个URL并获取从该URL返回的HTTP状态代码。目前我正在使用WININET函数来实现这一点。实现此目的的代码:C++:从URL获取HTTP状态代码

hOpen = InternetOpenA(“MYAPP”,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0); hFile = InternetOpenUrlA(hOpen,url.c_str(),NULL,0,INTERNET_FLAG_RELOAD,0); HttpQueryInfoA(hFile,HTTP_QUERY_STATUS_CODE,(void *)buffer,& dwBufLen,NULL);

我做了一些检查以查看性能,我可以看到平均一次命中需要大约300毫秒。由于我将拍摄多首歌曲,所以总时间约为8-10秒,这会减慢整个应用程序的速度。

同样在MAC上也实现了约100毫秒左右(我正在使用COCOA)。

那么WIN上有没有其他的API可以用来让它更快?

由于提前, 阿米特

+0

你可以使用boost :: asio库。它可能会更快。 – Xorlev 2010-03-04 05:42:13

+0

你是否做过任何包嗅探,看看实际的URL检索需要多长时间。所用的时间取决于URL。 – Murray 2010-03-04 05:48:51

+0

实际上我们不能包括任何其他库..所以我必须依靠标准的C++调用... – eramitmodi 2010-03-04 08:47:59

WinHTTP的是其他主要的Win32 HTTP API。它为没有UI的服务器和客户端设计更多,因此可能会更快。

libcurl是另一种选择。它实际上是平*立的。你可能不喜欢这个库的东西是你需要一些额外的DLL。

+0

libcurl的'简单界面'很简单,支持你所描述的一切,看看http://curl.haxx.se/libcurl/c/libcurl-tutorial.html – jpyllman 2010-03-04 07:40:14