【发布时间】:2010-03-04 05:37:32
【问题描述】:
我正在开发一个应用程序,我必须点击一个 URL 并获取从该 URL 返回的 HTTP 状态代码。目前我正在使用 WININET 函数来实现这一点。实现这一点的代码:
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 可以让我更快地实现这一点?
提前致谢, 阿米特
【问题讨论】:
-
你可以使用 boost::asio 库。它可能会更快。
-
您是否做过任何数据包嗅探以查看实际的 URL 检索需要多长时间。所用时间取决于 URL。
-
实际上我们不能包含任何其他库......所以我必须依赖标准 C++ 调用......
-
然后尝试 WinHTTP,如下所述。或者,如果这还不够快,您可能必须在 Windows 堆栈之上构建自己的 HTTP 库。