Получение ответа API от ошибки HTTP-вызова - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь получить ответ от API. Ссылка API содержит идентификационный номер субъекта. например HTTP ... / a12 Он вернет объект XML, как видно из Почтальона.

<Response>
    <code>200</code>
    <status>OK</status>
    <message>Completed</message>
    <messageCode/>
    <returnObj>
        <field1>0.25000</field1>
        <field2>0.01150</field2>
    </returnObj>
</Response>

Однако, если я отправил API, где идентификатор не существует в базе данных, скажем, http ... / g14, он вернет этот XML в Postman.

<Response>
    <code>400</code>
    <status>BAD_REQUEST</status>
    <message>ID is invalid.</message>
    <messageCode>RGN001</messageCode>
    <returnObj/>
</Response>

Я могу получить первый объект XML без проблем, но я не могу получить второй XML, содержащий ошибку. Мой ASP-клиент возвращает ошибку 400, даже если XML возвращается в Postman.

Мой код для извлечения XML выглядит примерно так

HttpWebRequest wrWebRequest = setAuthHeader(endpoint);
wrWebRequest.Method = "GET";
HttpWebResponse wrWebResponse = wrWebRequest.GetResponse() as HttpWebResponse; //it fails here.

Конечно, консоль возвращает эту ошибку

System.Net.WebException: The remote server returned an error: (400) Bad Request.

Альтернативно, я также пробую другой метод

var client = new WebClient();
client.Headers[HttpRequestHeader.Authorization] = "Basic xxxxxxx";
var text = client.DownloadString(endpoint);

Но это возвращает ту же ошибку.

Я просто хочу получить 2-й ответ XML всякий раз, когда я делаю недопустимый HTTP-вызов, в котором ответ был выполнен на заказ.

Заранее спасибо за любое руководство и помощь.

1 Ответ

0 голосов
/ 17 июня 2019

К сожалению, WebClient разработан таким образом.Вы можете попробовать иметь блок try catch, чтобы проверить, получили ли вы 400, но это только увеличивает накладные расходы.

Я рекомендую вам использовать HttpClient, который не выбрасывает в случае, если вы получаете400 Bad Request ответ.

Документацию о HttpClient можно найти здесь .

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