【发布时间】:2013-07-19 15:48:20
【问题描述】:
我为我的应用程序创建了一个自定义 HTTP 类。这只是基本的,应用程序相当简单。反正有时候post方法会返回如下错误:
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 状态的请求。大多数情况下它都能正常工作,偶尔也会出现异常并抛出异常。
捕获此异常以便我可以重试请求的最佳方法是什么?
【问题讨论】:
-
调试方法。如果要解决此问题,您需要异常消息和堆栈跟踪。添加 try/catch 并记录异常信息。
-
艾米,我该如何处理异常重试呢?如果我抓住它,那又怎样?我再试一次吗?如果我想重试请求 3 次怎么办?我认为这只是 Facebook 服务器响应错误的问题,因为 99% 的时间它都能正常工作。
-
你确定这里发生了异常吗?只是问因为
HttpWebResponse包含StatusCode,我认为该错误更多是未能正确反应StatusCode不是HttpStatusCode.OK的事实... -
我知道错误是什么。修复它,这是一个应用程序问题。仍然想知道处理超出我控制范围的 HTTP 错误的最佳方法,因为这些错误在我开发网络爬虫时经常发生。我倾向于捕捉和忽略,但我不想这样做。
标签: c#