如何在WP7中使用HttpWebRequest处理错误
本文关键字:HttpWebRequest 处理 错误 WP7 | 更新日期: 2023-09-27 17:59:16
使用WebClient类时,可以使用检查错误和空结果
e.error!=空
和
e.result==空
分别。如何使用HttpWebRequest类处理此问题?所有的例子似乎都忽略了这一点,但它在应用中至关重要。
HttpWebRequest
使用IAsyncResult
和Begin/End对进行操作。
您将向Begin操作传递一个回调方法委托,然后在该回调中为该操作调用End方法。若要捕获操作的异步部分可能发生的错误,请在对End方法的调用周围放置一个try块。
例如,当呼叫BeginGetResponse
时,您可能会将此呼叫传回:-
private void Callback(IAsyncResult asyncResult)
{
try
{
HttpWebResponse resp = (HttpWebResponse)myRequest.EndGetResponse(asyncResult);
}
catch (Exception e)
{
//Something bad happened during the request
}
}
尝试像Spring.REST(NuGet上的"Spring.REST")这样的REST客户端框架,它将为您完成所有这些样板代码:
RestTemplate client = new RestTemplate("http://exemple.com/");
client.GetForObjectAsync<string>("path/", r =>
{
if (r.Error != null)
{
}
});
您可以使用try-catch。
try {
// Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid site");
// Get the associated response for the above request.
HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();
}
catch(WebException e) {
Console.WriteLine("This program is expected to throw WebException on successful run."+
"'n'nException Message :" + e.Message);
if(e.Status == WebExceptionStatus.ProtocolError) {
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
}
}
catch(Exception e) {
Console.WriteLine(e.Message);
}
http://msdn.microsoft.com/en-us/library/system.net.webexception.status.aspx