簡體   English   中英

C#HttpWebRequest與瀏覽器

[英]C# HttpWebRequest vs browser

我正在嘗試與Shopping.com REST服務集成。
因此,我編寫了一個簡單的(最少代碼)C#應用程序,以使用HttpWebRequest類檢索XML數據。 我已經使用StopWatch進行基准測試,響應時間(包括Stream.ReadToEnd()Stream.ReadToEnd()毫秒。

聽起來不錯,但隨后我使用Fiddler在Chrome瀏覽器中測試了響應時間,響應時間約為600-800。

我讀過幾篇文章。 有人建議將HttpWebRequest.Proxy設置為null / WebRequest.DefaultWebProxy但是並沒有明顯改善。

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

那么,我應該怎么做才能達到此響應時間?

您啟用gzip和deflate嗎?

另外,第一次在代碼中執行Web請求時,將進行預熱以加載必要的程序集,初始化服務點並建立HTTP連接,因此請確保查看第二次和后續執行的時間。

編輯:對不起,您仍然需要使用GZipStream或DeflateStream解碼結果,但這至少可以為您提供想法。 有關更多信息,請參見此處: HttpWebRequest和本機GZip壓縮

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM