Reading custom HttpWebResponse StatusDescription?

I set a custom StatusDescription in a RESTful WCF service when an exception is thrown. This meant giving the caller a friendly description of why he received the failure status code.

Below is the answer I see in Fiddler. Therefore, I know that my user message is returning to the caller. I cannot figure out how to get this message from .NET. StatusDescription does not contain this string.

If you could provide a simple bit of example code, that would be great.

HTTP / 1.1 500 Message: "Exception of type Exceptions.DataSourceNotFoundException was thrown." Uri: http://www.test1.com/
Content-Length: 0
Server: Microsoft-HTTPAPI / 2.0
Date: Mon, Apr 20, 2009 07:13:40 AM GMT

UPDATE The
answer to this question does not work in Silverlight. Tested in Silverlight 2 and 3 beta.

+3
source share
4 answers

Not a .NET programmer, found this in msdn

catch(WebException ex)
{
    string message = ((HttpWebResponse)ex.Response).StatusDescription;
}
+2
source

.NET , Java HTTP- 404 Not Found, 404s Java FileNotFoundException. Java HttpURLConnection#getErrorStream, #getResponseMessage.

: , - .NET- 500 ? HttpWebRequest :

HttpWebRequest WebException, . WebException.Status WebExceptionStatus , . WebException.Status WebExceptionStatus.ProtocolError, Response HttpWebResponse, .

: Response WebException.Response, HttpWebRequest.GetResponse. , WebException Response. WebException.Response, .

: , GetResponse HttpWebRequest, Response WebException:

try {
  HttpWebRequest myHttpWebRequest = 
      (HttpWebRequest) WebRequest.Create("http://www.example.org/not_found");
  HttpWebResponse myHttpWebResponse =
      (HttpWebResponse) myHttpWebRequest.GetResponse();
  myHttpWebResponse.Close();
}
catch(WebException e) {
  Console.WriteLine("Exception Message: " + e.Message);
  if(e.Status == WebExceptionStatus.ProtocolError) {
    Console.WriteLine("Status Code: {0}",
        ((HttpWebResponse)e.Response).StatusCode);
    Console.WriteLine("Status Description: {0}",
        ((HttpWebResponse)e.Response).StatusDescription);
    }
}
catch(Exception e) {
  Console.WriteLine(e.Message);
}
+3

, , 500. (200 - ), WebRequest.GetResponse() WebException .NET.

HttpWebResponse StatusDescription. MSDN:

public static void GetPage(String url) 
    {
        try 
           {    
                // Creates an HttpWebRequest for the specified URL. 
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); 
                // Sends the HttpWebRequest and waits for a response.
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 
                if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
                   Console.WriteLine("\r\nResponse Status Code is OK and StatusDescription is: {0}",
                                        myHttpWebResponse.StatusDescription);
                // Releases the resources of the response.
                myHttpWebResponse.Close(); 

            } 
        catch(WebException e) 
           {
                Console.WriteLine("\r\nWebException Raised. The following error occured : {0}",e.Status); 
           }
        catch(Exception e)
        {
            Console.WriteLine("\nThe following Exception was raised : {0}",e.Message);
        }
    }

: http://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.statuscode.aspx

, HttpWebResponse :

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.
     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) {
        Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
        Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
    }
}
catch(Exception e) {
    Console.WriteLine(e.Message);
}

: http://msdn.microsoft.com/en-us/library/system.net.webexception.status.aspx

0

, /, "Uri:" , , - .

":" : http://tools.ietf.org/html/rfc2616#section-6.1.1 , "Message:" - HTTP- ( webResponse.Headers [ "" ]).

(, X-Error-Details).

0

Source: https://habr.com/ru/post/1706708/


All Articles