C# HttpWebRequest vs browser

本文关键字:browser vs HttpWebRequest | 更新日期: 2023-09-27 18:01:50

我正在尝试与Shopping.com REST服务集成。
所以我写了一个简单的(最少的代码)c#应用程序来检索使用HttpWebRequest类的XML数据。我使用StopWatch进行基准测试,响应时间(包括Stream.ReadToEnd())大约是1300-1700毫秒。

这可能听起来不错,但后来我用Fiddler测试了Chrome浏览器的响应时间,响应时间大约是600-800。

我读了一些文章。有些人建议设置HttpWebRequest。代理到null/WebRequest.DefaultWebProxy,但没有明显的改善。

这里的request-url:
http://sandbox.api.shopping.com/publisher/3.0/rest/generalsearch?apikey=78b0db8a - 0 -觉得- 4939 a2f9 d3cd95ec0fcc& trackingId = 7000610,关键字=尼康

那么,我应该怎么做才能达到这个响应时间呢?

C# HttpWebRequest vs browser

是否启用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);