HttpWebRequest避免错误(500)

本文关键字:错误 HttpWebRequest | 更新日期: 2023-09-27 18:29:15

我正在使用webservice调用其他服务。我不得不用loop呼叫许多服务。

现在的问题是,当一些服务不可用时,循环就被打破了。

HttpWebRequest request = WebRequest.Create(stringBuilder.ToString()) as HttpWebRequest;
request.ContentType = "application/json; charset=utf-8";
request.Credentials = CredentialCache.DefaultCredentials;
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
{
    continue;
}

当服务不可用时(错误500),它在我检查状态代码之前就坏了。

response = (HttpWebResponse)request.GetResponse(); 错误

我如何检查错误并继续使用其他服务进行呼叫?

HttpWebRequest避免错误(500)

这是经过设计的,并在文档中得到了很好的解释,请参阅:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse.aspx

如果引发WebException,请使用的"响应"answers"状态"属性确定来自服务器的响应的异常。

让你的代码看起来像:

HttpWebRequest request = WebRequest.Create(stringBuilder.ToString()) as HttpWebRequest; 
request.ContentType = "application/json; charset=utf-8"; 
request.Credentials = CredentialCache.DefaultCredentials; 
try
{
    response = (HttpWebResponse)request.GetResponse(); 
    // perform normal processing
}
catch(WebException ex)
{
    // are you sure you just want to swallow the exception like this?
    continue;
}