2012-03-29 83 views
0

我正在使用webservice來調用其他服務。我必須用循環調用許多服務。避免錯誤的HttpWebRequest(500)

現在的問題是,當一些服務不可用,循環被打破。

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),在檢查statusCode之前它已被破壞。

錯誤在response = (HttpWebResponse)request.GetResponse();

如何檢查錯誤並繼續與其他服務打電話?

+0

不的GetResponse()拋出一個異常時,它「休息」(或者你可以趕上一個特定的信號)? – 2012-03-29 02:19:20

+1

發現確實這篇文章,可以幫助;)http://stackoverflow.com/questions/1857512/httpwebresponse-returns-404-error – 2012-03-29 02:21:24

+0

@HQarroum是的,這是拋出一個異常。但是我需要避免錯誤並將循環運行到下一個服務。 – OammieR 2012-03-29 02:24:45

回答

2

這是由設計和文檔很好的解釋,請參閱:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse.aspx

如果引發WebException,使用 異常的響應和狀態屬性來確定從服務器的響應。

使你的代碼看起來是這樣的:

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; 
}