[英]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.