janhartmann
janhartmann

Reputation: 15003

Reading remote file [C#]

I am trying to read a remote file using HttpWebRequest in a C# Console Application. But for some reason the request is empty - it never finds the URL.

This is my code:

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

How come this is not possible?

The file only contains a string. Nothing more!

Upvotes: 3

Views: 8414

Answers (2)

Matthew Scharley
Matthew Scharley

Reputation: 132524

You have to get the response stream and read the data out of that. Here's a function I wrote for one project that does just that:

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

Upvotes: 3

Jon Skeet
Jon Skeet

Reputation: 1504062

How are you reading the response data? Does it come back as successful but empty, or is there an error status?

If that doesn't help, try Wireshark, which will let you see what's happening at the network level.

Also, consider using WebClient instead of WebRequest - it does make it incredibly easy when you don't need to do anything sophisticated:

string url = "http://uo.neverlandsreborn.org:8000/botticus/status.ecl";
WebClient wc = new WebClient();
string data = wc.DownloadString(url);

Upvotes: 14

Related Questions