我使用以下方法接收Web请求响应。
private string SendRequest(string url)
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
if (url != null && url.Length > 3 && url.EndsWith("xml"))
httpWebRequest.ContentType = "application/xml";
else
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "GET";
httpWebRequest.Headers.Add("Authorization", "Basic " + svcCredentials);
try
{
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
return streamReader.ReadToEnd();
}
catch (Exception ex)
{
Helper.Log.Error(ex.Message);
return null;
}
}
我注意到,有时(大约50个请求中有1个)此方法不会返回整个响应。当URL指向XML文件(例如https://www.mywebsite.com/thetargetfile.xml)时,或者至少我还没有遇到其他类型的URL的问题时,这种情况会更经常发生。
在对a similar question的答复中,提到:
[...]当您在互联网上使用相同的代码时,服务器不会 将所有响应数据发送到一个块中,服务器可能正在忙于处理 其他请求,或者可能存在网络延迟,那么,您 分几块接收响应数据。
我上面的StreamReader
是否可能没有收到整个回复?我已经在Web浏览器上测试了响应,并且似乎获得了整个XML文档。