代码之家  ›  专栏  ›  技术社区  ›  janhartmann

读取远程文件[c]

  •  2
  • janhartmann  · 技术社区  · 15 年前

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

    这是我的代码:

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

    为什么这是不可能的?

    文件只包含一个字符串。再也没有了!

    2 回复  |  直到 15 年前
        1
  •  12
  •   Jon Skeet    15 年前

    您如何读取响应数据?它是否返回为成功但为空,或者是否存在错误状态?

    如果这不起作用,试试看 Wireshark ,这将让您了解网络级别的情况。

    另外,考虑使用 WebClient 而不是 WebRequest -当你不需要做任何复杂的事情时,它确实让你变得非常容易:

    string url = "http://uo.neverlandsreborn.org:8000/botticus/status.ecl";
    WebClient wc = new WebClient();
    string data = wc.DownloadString(url);
    
        2
  •  3
  •   Matthew Scharley    15 年前

    您必须获取响应流并从中读取数据。下面是我为一个项目编写的函数,它可以做到:

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