2013-02-28 74 views
0

我正在嘗試與Shopping.com REST服務集成。
所以我寫了一個簡單的(最小代碼)C#應用程序來使用HttpWebRequest類來檢索XML數據。我使用StopWatch進行基準測試,響應時間(包括Stream.ReadToEnd())大約爲1300-1700毫秒。C#HttpWebRequest vs瀏覽器

它聽起來不錯,但我已經使用Fiddler測試了Chrome瀏覽器的響應時間,響應時間約爲600-800。

我讀過幾篇文章。一些建議將HttpWebRequest.Proxy設置爲null/WebRequest.DefaultWebProxy,但沒有明顯改善。

這裏請求的url:
http://sandbox.api.shopping.com/publisher/3.0/rest/GeneralSearch?apiKey=78b0db8a-0ee1-4939-a2f9-d3cd95ec0fcc&trackingId=7000610&keyword=nikon

那麼,應該怎樣做才能達到這個響應時間?

回答

0

您是否啓用gzip和deflate?

此外,您第一次在代碼中執行Web請求時,會加載所需的程序集,初始化服務點並建立HTTP連接,因此請務必查看第二次並隨後執行。

編輯:對不起,你仍然需要解碼使用GZipStream或DeflateStream的結果,但這至少給你的想法。在這裏看到更多的信息:HttpWebRequest & Native GZip Compression

var timer = Stopwatch.StartNew(); 

var url = "http://sandbox.api.shopping.com/publisher/3.0/rest/GeneralSearch?apiKey=78b0db8a-0ee1-4939-a2f9-d3cd95ec0fcc&trackingId=7000610&keyword=nikon"; 
var webRequest = WebRequest.Create(url); 
webRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); 
using (var webResponse = webRequest.GetResponse()) 
using (var responseStream = webResponse.GetResponseStream()) 
using (var streamReader = new StreamReader(responseStream)) 
{ 
    var content = streamReader.ReadToEnd(); 
} 

var timeSpan = timer.Elapsed; 
Console.WriteLine(timeSpan); 
+0

它的工作!謝謝 – 2013-03-01 08:26:26