HttpWebRequest / Ошибка выдачи ответа "Не найдено" - PullRequest
1 голос
/ 01 апреля 2011

Я делаю вызов API для службы REST.Служба REST возвращает строку XML, содержащую маркер пользователя, если введенный пароль правильный, или строку XML с данными, если это не так.

Вот пример, если пароль неверный:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<authenticationResponse>
  <statusCode>403</statusCode>
  <errors>
    <error>
       ....
    </error>
  </errors>
  <timestamp>2011-03-31 22:45:03 GMT</timestamp>
</authenticationResponse>

С этим кодом ниже. Похоже, .NET переводит это в фактическую ошибку.Я все еще хочу, чтобы он прочитал данные XML и проигнорировал любую ошибку:

RequestData requestData = (RequestData)result.AsyncState;
HttpWebResponse response = 
                 (HttpWebResponse)requestData.Request.EndGetResponse(result);

Как я могу игнорировать ошибку, но при этом создать поток для чтения XML?

Ответы [ 3 ]

0 голосов
/ 01 апреля 2011

Catch WebException, проверьте статус исключения, прочитайте ответ. Посмотрите эти вопросы для примеров:

0 голосов
/ 03 апреля 2011

Хорошо, так что я понял, здесь есть несколько частей.

Прежде всего API генерирует тот XML, когда передаваемые параметры не соответствуют ожидаемым. В этом случае, если пароль неверный, он вернет 403.

Ошибка является ошибкой, поэтому инфраструктура обрабатывает ее как таковую, однако в любом случае ошибка содержит ответ, вам просто нужно получить ответ от ошибки. По сути, это ответ на вопрос. Чтобы прочитать данные в потоке, нужно поймать ошибку и извлечь ответ из ошибки.

По сути, я думаю, что все ответы здесь верны, или кусочки, просто нужно немного покопаться, чтобы собрать все вместе.

Спасибо, ребята.

0 голосов
/ 01 апреля 2011

Ваш код не переводит это в фактическую ошибку - код состояния HTTP 403 "Запрещено".

HTTP "Not Found" имеет код состояния HTTP 404, поэтому похоже, что запрашиваемая конечная точка HTTP не существует в службе REST.

...