简体   繁体   English

使用HttpWebResponse :: GetResponseStream方法时接收不完整的数据

[英]Receiving incomplete data when using HttpWebResponse::GetResponseStream method

Is HttpWebResponse::GetResponseStream() guaranteed to get all data contained in an HTTP response? 是否保证HttpWebResponse :: GetResponseStream()可以获取HTTP响应中包含的所有数据? Or do I need to create some kind of loop and wait to make sure all data is being sent from the server to which I'm connected? 还是我需要创建某种循环并等待以确保所有数据都从我连接的服务器发送? The code below successfully grabs a response about 50% of the time. 下面的代码大约有50%的时间成功获取了响应。

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://JohnDoeServerSite.com");
    req.Method = "POST";
    req.ContentType = @"text/xml; charset=utf-8";
    req.Host = "http://JohnDoeServerSite.com";
    req.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)";
    using (StreamWriter sw = new StreamWriter(req.GetRequestStream()))
    {
        sw.Write(xml);
    }
    string result;
    using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
    using (Stream st = res.GetResponseStream())
    {
        Thread.Sleep(10000);  //  Added to see if additional data would be sent (perhaps?)
        using (StreamReader sr = new StreamReader(st, Encoding.UTF8))
        {
            st.Flush();   
            result = sr.ReadToEnd();
        }
    }

After looking into this more, it turns out that the server was not sending all of the data in its entirety. 在进一步研究之后,事实证明服务器并未完整发送所有数据。 It seems that Michael Yoon is right in saying that everything should be returned. 迈克尔·尹(Michael Yoon)似​​乎应该说应该归还一切,这是正确的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM