StreamReader返回空字符串

时间:2013-02-05 11:07:10

标签: c# http get streamreader getresponse

我有以下代码:

  System.Net.WebRequest req = System.Net.WebRequest.Create(url);
  req.Credentials = new NetworkCredential("admin", "password");
  System.Net.WebResponse resp = req.GetResponse();
  System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
  var result = sr.ReadToEnd().Trim();

当我运行代码时,结果只是一个空字符串。然而,当我单步执行代码时,结果是一个包含数据的字符串,正如我所期望的那样,当我在这一行放置一个断点时:

System.Net.WebResponse resp = req.GetResponse();

所以我认为问题在于这个或后续的路线。不知道如何继续,帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

我在WebResponse上使用CopyToAsync()时遇到了类似的问题,结果发现Stream的指针在Stream的末尾结束(它的指针位置等于它的长度)。

如果是这种情况,您可以在使用以下内容读取字符串内容之前重置指针...

var responseStream = resp.GetResponseStream();

responseStream.Seek(0, SeekOrigin.Begin);

var sr = new StreamReader(responseStream);
var result = sr.ReadToEnd().Trim();

虽然,由于您正在直接读取流,而不是将其复制到新的MemoryStream中,因此这可能不适用于您的情况。

答案 1 :(得分:0)

可能是“req.GetResponse();”需要更多时间.....当你把断点带到时间来完成任务时。

您需要检查

resp.StatusDescription

之前

System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());