0

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

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

我读过几篇文章。一些人建议将 HttpWebRequest.Proxy 设置为 null /WebRequest.DefaultWebProxy但它并没有做出重大改进。

这里的请求网址:
http ://sandbox.api.shopping.com/publisher/3.0/rest/GeneralSearch?apiKey=78b0db8a-0ee1-4939-a2f9-d3cd95ec0fcc&trackingId=7000610&keyword=nikon

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

4

1 回答 1

0

您是否启用 gzip 和放气?

此外,当您第一次在代码中执行 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);
于 2013-02-28T21:46:20.123 回答