2013-07-19 172 views
1

我有一个自定义的HTTP类,我为我的应用程序。这只是基本的,应用程序非常简单。无论如何,有时后方法将返回以下错误:处理远程服务器返回错误:(500)内部服务器错误

Handling The remote server returned an error: (500) Internal Server Error. 

我的方法是

public String post(String url, String postData) 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.UserAgent = this.userAgent; 
     request.KeepAlive = false; 
     request.ProtocolVersion = HttpVersion.Version10; 
     request.CookieContainer = this.cookieJar; 

     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     request.ContentLength = byteArray.Length; 

     Stream stream = request.GetRequestStream(); 
     stream.Write(byteArray, 0, byteArray.Length); 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); 

     String source = reader.ReadToEnd(); 

     return source; 
    } 

我送更新我的Facebook状态的请求。大多数情况下它是有效的,而不是奇怪的情况并且抛出异常。

什么是捕获此异常的最佳方法,以便我可以重试请求?

+0

调试该方法。如果你想解决这个问题,你需要异常消息和堆栈跟踪。添加一个try/catch并记录异常信息。 – Amy

+0

艾米,我如何处理例外,但重试它?如果我抓住它,那么是什么?我是否再次重试?如果我想重试请求3次,该怎么办?我认为这只是Facebook服务器响应错误的一个问题,因为它的工作时间有99%。 –

+0

你确定这里发生异常吗?只是因为'HttpWebResponse'包含一个'StatusCode',我在想这个错误更多的是对'StatusCode'不是'HttpStatusCode.OK'这一事实做出正确反应的错误... – fvu

回答

2

重复请求可能不明智。有些情况下,请求无法返回,但接收方服务器可能已处理该请求,因此重试会导致重复。

如果你从这个post方法提出错误响应会更好 - 通过引发一个特定的异常 - 那么它是调用方法决定做什么的责任。

它可能会选择重复请求或忽略它,或尝试验证它在尝试再次发送之前已收到。

+0

声音逻辑。我会试一试。 –

相关问题