5

在 Windows Phone 上,我可以WebException使用StatusCode == HttpStatusCode.NotFoundif

  1. 服务器返回 404
  2. 由于连接不良,无法找到服务器。

在 Windows Phone 上WebException的状态WebExceptionStatus.UnknownError适用于这两种情况。

我如何区分1案例2

我观察到的是连接不良(未找到服务器)ResponseUri为 null 并且WebResponse's Headers 包含0项目。

EDIT
ResponseUri不为空,而是为OriginalString

这样做是否安全:

catch (WebException ex)
{
    switch (ex.Response.StatusCode)
    {
        ...
        case HttpStatusCode.NotFound:
            if (ex.Response.ResponseUri == null
                || string.IsNullOrEmpty(httpWebResponse.ResponseUri.OriginalString))
                DoServerNotFound();
            else
                DoServerReturned404();
4

2 回答 2

0

为什么不使用NetworkInterface.GetIsNetworkAvailable()在进行网络呼叫之前查看是否有活动的网络连接。否则,您最终什么都没有等待并浪费了一个电话。如果有连接但呼叫仍然失败,则您知道这是 Web 服务的问题。

我在我的应用程序中使用它,如果没有连接,我不会打电话。

谢谢马克斯
_

于 2012-11-02T02:13:57.467 回答
0

如果您收到床位请求的“未找到”异常,这将有所帮助。

  catch (WebException ex)
       {                     
         using (WebResponse webResponse = ex.Response)
              {
                HttpWebResponse httpResponse = (HttpWebResponse)webResponse;
                using (Stream data = webResponse.GetResponseStream())
                using (var reader = new StreamReader(data))
                    {
                      string string = reader.ReadToEnd();

                      }
              }
          }
于 2013-12-12T13:53:31.780 回答