无法使用HttpWebResponse读取响应数据

时间:2011-11-21 14:02:19

标签: c# asp.net

byte[] content = Encoding.UTF8.GetBytes(data);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(content,0,content.Length);
response = (HttpWebResponse)request.GetResponse(); 

reader = new StreamReader(response.GetResponseStream(),System.Text.Encoding.UTF8);
String resultData = reader.ReadToEnd();

我正在获取数据作为回应,同时也在进行快速观察.ReadToEnd()它在VS中显示数据,但resultData始终为空。

任何想法我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

如果您在调试器中使用reader.ReadToEnd(),那么当您尝试在实际代码中调用ReadToEnd()时,将不会再有任何数据。

请注意,您应该使用using语句作为响应,以便在完成后将其关闭。

答案 1 :(得分:-2)

您的代码有多个问题(ContentLength应该是content.Length而不是data.Length;应该处理一次性资源),但我不确定哪一个对您看到的行为负责

但是,使用WebClient Class

时,您的代码可能会略微缩短
using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.ContentType] = "application/json";

    string resultData = client.UploadString(url, data);
}

也许你可以检查一下你的情况是否有效。