我使用HttpClient
连接服务器(请参阅下面的简化代码)。我无法弄清楚如何回复HTML错误代码(例如403
)和超时,以便我可以报告结果。
当我遇到403
错误代码时,Visual Studio中会出现错误弹出窗口。但我可以弄清楚如何在代码中将其转换为try
。 ie是错误弹出窗口中出现的异常的名称?
using System.Net.Http;
HttpClient client = new HttpClient();
var response = client.PostAsync(dutMacUrl, null).Result;
var result = response.Content.ReadAsStringAsync().Result;
答案 0 :(得分:1)
您可以使用async/await功能来简化代码并避免使用Result
。
例如
public async Task<string> Foo(string uri)
{
var client = new HttpClient();
try
{
var response = await client.PostAsync(uri, null);
}
catch (Exception ex)
{
//here you handle exceptions
}
// use this if (response.StatusCode != HttpStatusCode.OK) { do what you want }
// or this if (response.IsSuccessStatusCode) { do what you want }
var result = await response.Content.ReadAsStringAsync();
return result;
}
答案 1 :(得分:1)
如果您使用的是webAPI,则另一个选项是使用IHttpActionResult
public object IHttpActionResult mymethod()
{
//instantiate your class or object
IEnummerable<yourClass> myobject = new IEnmmerable<yourClass>(); //assuming you want to return a collection
try{
//..dostuff
//..handle dto or map result back to object
return Ok(myobject)
}
catch(Exception e)
{
//return a bad request if the action fails
return BadRequest(e.Message)
}
}
这将允许您调用api端点,并使用更新的对象返回成功的响应,或者如果端点失败则返回错误的请求。