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

时间:2014-01-21 03:01:25

标签: c# .net

HttpWebResponse :: GetResponseStream()是否保证获取HTTP响应中包含的所有数据?或者我是否需要创建某种循环并等待确保从我连接的服务器发送所有数据?下面的代码成功地在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();
        }
    }

1 个答案:

答案 0 :(得分:0)

在进一步研究之后,事实证明服务器并未完整地发送所有数据。看来Michael Yoon说得应该归还一切都是正确的。