2011-10-07 68 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。 –