WebException when reading a WebException's response stream
15,152
Why is this surprising? Try the following from MSDN:
try {
// Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid site");
// Get the associated response for the above request.
using (HttpWebResponse myHttpWebResponse =
(HttpWebResponse) myHttpWebRequest.GetResponse()) {
myHttpWebResponse.Close();
}
}
catch(WebException e) {
Console.WriteLine("This program is expected to throw WebException on successful run."+
"\n\nException Message :" + e.Message);
if(e.Status == WebExceptionStatus.ProtocolError) {
var response = ((HttpWebResponse)e.Response);
Console.WriteLine("Status Code : {0}", response.StatusCode);
Console.WriteLine("Status Description : {0}", response.StatusDescription);
try {
using (var stream = response.GetResponseStream()) {
using (var reader = new StreamReader(stream)) {
var text = reader.ReadToEnd();
Console.WriteLine(text);
}
}
} catch (WebException ex) {
// Oh, well, we tried
}
}
}
catch(Exception e) {
Console.WriteLine(e.Message);
}
Related videos on Youtube
Comments
-
ripper234 about 2 years
I'm communicating with a web server from .Net. The web server throws a 500 internal server error and writes a detailed error message.
I'm trying to read the error message that is received from a web exception, but getting another web exception. Why is the second WebException thrown?
try { var webResponse = (HttpWebResponse)webRequest.GetResponse(); } catch (WebException e) { if (e.Status == WebExceptionStatus.ProtocolError) { // the next line throws a web exception Console.WriteLine(new StreamReader(e.Response.GetResponseStream()).ReadToEnd()); } }
-
ripper234 almost 15 yearsAmm, because I want to actually read the error message transmitted over the wire somehow. The website is not non-existent, it replies with an error, which I want to log / analyze on the client side.
-
John Saunders almost 15 yearsIf the web site is nonexistant, where's the error come from? At any rate, updated.
-
ripper234 almost 15 yearsAnd the update still doesn't help much - I don't understand why I'm getting an exception in the catch block.
-
John Saunders almost 15 yearsInteresting. I missed the "non". Please post the FULL exception you get in the catch block. Post the results of ex.ToString(). Also, if you implemented the code above, what's the value of ((HttpWebResponse)e.Response).StatusCode and .StatusDescription?