Принимает ли .NET исключение WebException, когда веб-сервер возвращает недопустимое сообщение? - PullRequest
1 голос
/ 06 марта 2012

Я разрабатываю клиент на WP7, который поддерживает потоковую передачу, а его содержимое находится на сервере Rails.

Когда я вызываю допустимый поток, все прекрасно работает, но когда я вызываю недопустимый поток, серверловит WebException с сообщением:

The remote server returned an error: NotFound.

Это немного странно, потому что если я делаю тот же запрос в браузере (например, Google Chrome), я получаю следующее сообщение json:

{ "success":false, "error_code": "stream_not_allowed","error_message": "Streaming is not allowed" }

Что ж, я хочу получить сообщение об ошибке, чтобы показать его клиенту.

Код, который я использую:

private static void DoRequest(string path, GenericServiceHelper helper) {
    var uri = new Uri(path);
    var request = (HttpWebRequest)WebRequest.Create(uri);
    request.Method = "GET";
    helper.request = request;
    request.BeginGetResponse(HandleResponse, helper);
}

private static void HandleResponse(IAsyncResult ar) {
    var helper = (GenericServiceHelper)ar.AsyncState;
    HttpWebRequest originalRequest = helper.request;
    HttpWebResponse response;

    try {
        response = (HttpWebResponse)originalRequest.EndGetResponse(ar);
    }
    catch (WebException e) {
        // It fails here
    }

    // Do normal stuff
}

1 Ответ

2 голосов
/ 06 марта 2012

Полагаю, вы получите WebException за любой неуспешный код состояния HTTP (что вполне разумно, IMO).

Вы можете получить ответ в WebException через свойство Response:

catch (WebException e) {
    // You should check the status code etc to make sure you're not masking
    // real errors.
    response = e.Response;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...