读取远程文件[C#]

时间:2009-10-24 14:06:33

标签: c# asp.net

我正在尝试使用C#控制台应用程序中的HttpWebRequest读取远程文件。但由于某种原因,请求是空的 - 它永远不会找到URL。

这是我的代码:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://uo.neverlandsreborn.org:8000/botticus/status.ecl");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

为什么这不可能?

该文件只包含一个字符串。没什么了!

2 个答案:

答案 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();
            }
        }
    }