我正在尝试与Shopping.com REST服务集成
所以我编写了一个简单的(最小代码)C#应用程序来使用HttpWebRequest
类检索XML数据。我使用StopWatch
进行基准测试,响应时间(包括Stream.ReadToEnd()
)大约是1300-1700毫秒。
听起来不错,但后来我用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
那么,我该怎么办才能达到这个响应时间?
答案 0 :(得分:0)
你启用gzip和deflate吗?
此外,第一次在代码中执行Web请求时,会有一个预热来加载必要的程序集,初始化服务点并建立HTTP连接,因此请务必查看第二次和随后的处决。
编辑:对不起,你仍然需要使用GZipStream或DeflateStream解码结果,但这至少可以让你明白。有关详细信息,请参阅此处:HttpWebRequest & Native GZip Compressionvar 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);