我正在尝试从API获得响应。 API链接包含主题的ID号。例如http ... / a12 如Postman所示,它将返回XML对象。
<Response>
<code>200</code>
<status>OK</status>
<message>Completed</message>
<messageCode/>
<returnObj>
<field1>0.25000</field1>
<field2>0.01150</field2>
</returnObj>
</Response>
但是,如果我发送了一个数据库中ID不存在的API,例如http ... / g14,它将在邮递员中返回此XML。
<Response>
<code>400</code>
<status>BAD_REQUEST</status>
<message>ID is invalid.</message>
<messageCode>RGN001</messageCode>
<returnObj/>
</Response>
我可以毫无问题地检索第一个XML对象,但无法检索包含错误的第二个XML对象。即使XML是在Postman中返回的,我的ASP客户端也会返回错误400。
我检索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);
但这会返回相同的错误。
我只想在进行无效响应的HTTP调用时检索第二个XML响应。
在此先感谢您的指导和帮助。
答案 0 :(得分:0)
不幸的是,WebClient被设计为以这种方式工作。您可以尝试在其中放置一个[47, 69, 76, 97]
块,以检查是否收到try catch
,但这只会增加开销。
我建议您使用400
,它不会在收到HttpClient
响应的情况下抛出。
有关400 Bad Request
的文档可以在here中找到。