我正在尝试使用C#控制台应用程序中的HttpWebRequest读取远程文件。但由于某种原因,请求是空的 - 它永远不会找到URL。
这是我的代码:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://uo.neverlandsreborn.org:8000/botticus/status.ecl");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
为什么这不可能?
该文件只包含一个字符串。没什么了!
答案 0 :(得分:12)
您是如何阅读回复数据的?它是否成功返回但是为空,或者是否存在错误状态?
如果这没有帮助,请尝试Wireshark,这样可以让您了解网络级别的情况。
另外,请考虑使用WebClient
代替WebRequest
- 当您不需要执行任何复杂操作时,它确实非常容易:
string url = "http://uo.neverlandsreborn.org:8000/botticus/status.ecl";
WebClient wc = new WebClient();
string data = wc.DownloadString(url);
答案 1 :(得分:3)
您必须获取响应流并从中读取数据。这是我为一个项目编写的函数:
private static string GetUrl(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
throw new ServerException("Server returned an error code (" + ((int)response.StatusCode).ToString() +
") while trying to retrieve a new key: " + response.StatusDescription);
using (var sr = new StreamReader(response.GetResponseStream()))
{
return sr.ReadToEnd();
}
}
}