有时StreamReader无法收到整个响应

时间:2019-05-21 11:34:31

标签: c# xml httpwebrequest streamreader

我使用以下方法接收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文档。

0 个答案:

没有答案