Как получить responseText, когда сервер отправляет сообщение об ошибке 500 на WebRequest.Create (URL) .GetResponse () - PullRequest
1 голос
/ 06 апреля 2011

Я звоню в веб-службу json, которая отправляет сообщения об ошибках, устанавливая StatusCode равным 500, а затем отправляя сообщение об ошибке в виде текста ответа (например, {"Message": "InvalidUserName"}).

Проблема заключается в том, чтоASP.NET не дает мне текст ответа, если веб-служба отправляет код состояния 500.

try
{
    WebRequest request = WebRequest.Create(URL);
    request.Method = "POST";
    request.ContentType = "application/json; charset=utf-8";

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    string result = streamReader.ReadToEnd();
    streamReader.Close();
    response.Close();

    return result;
}
catch (Exception e)
{
    // If web service sends 500 error code then we end up here. 
    // But there is no way to get response text :-(
}

Есть ли способ решить эту проблему?Кроме того: я контролирую веб-службу, поэтому может стать решением для их изменения.(Примечание: мне нужно вызывать службу, используя простой материал WebRequest - в этом случае он не будет работать с другими методами, такими как добавление как WebReference и т. Д.)

Есть идеи?

1 Ответ

0 голосов
/ 06 января 2012

Catch WebException вместо.Он имеет свойство Response, содержащее ответ.Обязательно проверьте на нулевое значение перед использованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...