2011-10-07 84 views
1

我不得不手動連線我的網絡層。若要對Web服務的查詢,我用下面的代碼:Windows Phone - 如何獲取HTTP狀態碼?

public void RunService() 
{ 
    string serviceUrl = Constants.URL_OF_SERVICE; 
    WebRequest request = HttpWebRequest.Create(serviceUrl); 
    request.BeginGetResponse(new AsyncCallback(Service_Completed), request); 
} 

private void Service_Completed(IAsyncResult result) 
{ 
    try 
    { 
    WebRequest request = (WebRequest)(result.AsyncState); 
    WebResponse response = request.EndGetResponse(result); 

    // Continue doing stuff 
    } 
    catch (WebException ex1) 
    { 
    // How do I get the HTTP Status code here? 
    } 
} 

我在得到HTTP狀態代碼當錯誤發生的問題。有人可以告訴我如何在引發WebException時獲取HTTP狀態代碼?

謝謝!

回答

3

使用WebResponse這是part of the WebException

catch (WebException ex1) 
{ 
    using (HttpWebResponse response = (HttpWebResponse) ex1.Response) 
    { 
     if (response == null) 
     { 
      // Whatever 
     } 
     else 
     { 
      HttpStatusCode status = response.StatusCode; 
      // Whatever 
     } 
    } 
} 
1

隨着Windows Phone的問題是,任何錯誤翻譯成「404未找到」 - 哪怕是根本不存在的網絡或服務器沒有任何響應,你仍然會得到「404」 - 這是荒謬的,顯然是一個錯誤。

+0

您需要檢查'ResponseUri'屬性。如果它是空的,那麼你可以推斷它不是一個真正的404,而是一個通信問題。這只是部分解決方案:你仍然無法從其他4XX或5XX中分辨真實的404。 –