我正在使用以下代码向第三方发送HTTPWebRequest。响应需要2到22秒才能回来。第三方声称,一旦收到它,他们立即发回回复,并且他们的其他合作伙伴都没有报告任何延迟(但我不确定我是否相信他们 - 他们之前已经撒谎)。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.example.com");
request.Timeout = 38000;
request.Method = "POST";
request.ContentType = "text/xml";
StreamWriter streamOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(XMLToSend); // XMLToSend is just a string that is maybe 1kb in size
streamOut.Close();
HttpWebResponse resp = null;
resp = (HttpWebResponse)request.GetResponse(); // This line takes between 2 and 22 seconds to return.
StreamReader responseReader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
Response = responseReader.ReadToEnd(); // Response is merely a string to hold the response.
上面的代码有没有理由......暂停?代码在一个非常可靠的托管服务提供商(Rackspace Intensive Segment)中运行,并且它所使用的机器不会被用于其他任何东西。我只是在测试一些我们即将投入生产的代码。所以,并不是机器被征税,并且鉴于它是Rackspace并且我们正在付船,我怀疑它是他们的网络。
我只是想确保我的代码尽可能快,并且我没有做任何愚蠢的事情,因为在几周内,这段代码将会增加到每小时向第3部分运行20,000个请求。
答案 0 :(得分:4)
在关闭前尝试冲洗。
streamOut.Flush();
streamOut.Close();
还要下载微软网络监视器以确定是否有你或他们,你可以在这里下载...
答案 1 :(得分:2)
我会做一些事情:
答案 2 :(得分:1)
您可以在常规浏览器中点击该网址吗?这有多快?
您可以在此代码中点击其他网址(不是您的合作伙伴)吗?这有多快?
完全有可能你被“延迟错误”所困扰,即使你的合作伙伴立即做出反应,也会导致从你的角度出现不可预测的延迟。
另一个想法:我注意到您网址中的https。使用http是否更快?