我有以下代码:
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();
所以我认为问题在于这个或后续的路线。不知道如何继续,帮助将不胜感激。
答案 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());