Mendapatkan respons API dari kesalahan panggilan HTTP

Saya mencoba mendapatkan respons dari API. Tautan API berisi nomor ID subjek. misalnya http.../a12 Ini akan mengembalikan objek XML seperti yang terlihat di Tukang Pos.

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

Namun, jika saya mengirim API yang ID-nya tidak ada di database, katakanlah, http.../g14, XML ini akan dikembalikan di Tukang Pos.

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

Saya dapat mengambil objek XML pertama tanpa masalah, tetapi saya tidak dapat mengambil XML kedua yang berisi kesalahan. Klien ASP saya akan mengembalikan kesalahan 400, meskipun XML dikembalikan di Tukang Pos.

Kode saya untuk mengambil XML terlihat seperti ini

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

Tentu saja, konsol mengembalikan kesalahan ini

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

Sebagai alternatif, saya juga mencoba metode lain

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

Tapi ini mengembalikan kesalahan yang sama.

Saya hanya ingin mengambil respons XML ke-2 setiap kali saya melakukan panggilan HTTP yang tidak valid yang responsnya dibuat khusus.

Terima kasih sebelumnya atas panduan dan bantuan apa pun.


person Xidane    schedule 17.06.2019    source sumber


Jawaban (1)


Sayangnya, WebClient dirancang untuk bekerja seperti itu. Anda dapat mencoba memiliki blok try catch di sana untuk memeriksa apakah Anda menerima 400 tetapi itu hanya menambah overhead.

Saya menyarankan Anda untuk menggunakan HttpClient yang tidak muncul jika Anda menerima respons 400 Bad Request.

Dokumentasi tentang HttpClient dapat ditemukan di sini.

person Florin-Constantin Ciubotariu    schedule 17.06.2019