簡體   English   中英

如何在WP7中使用HttpWebRequest處理錯誤?

[英]How to handle errors with HttpWebRequest in WP7?

使用WebClient類時,您可以使用檢查錯誤和清空結果

e.error!= null

e.result == null

分別。 我將如何使用HttpWebRequest類處理此問題? 所有示例似乎都省略了它,但它在應用程序中至關重要。

HttpWebRequest使用IAsyncResult和Begin / End對進行操作。

您將已將Callback方法委托傳遞給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這樣的REST客戶端框架(NuGet上的“Spring.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM