2010-03-04 112 views
3

我正在研究一個應用程序,其中 - 我必須打一個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

回答

1

WinHTTP的是其他主要的Win32 HTTP API。它爲沒有UI的服務器和客戶端設計更多,因此可能會更快。

2

libcurl是另一種選擇。它實際上是平臺獨立的。你可能不喜歡這個庫的東西是你需要一些額外的DLL。

+0

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