5

Windows Phone では、if で取得WebExceptionできStatusCode == HttpStatusCode.NotFoundます

  1. サーバーが 404 を返しました
  2. 接続が悪いため、サーバーが見つかりません。

On Windows PhoneWebExceptionのステータスはWebExceptionStatus.UnknownError両方の場合です。

1case とcaseを区別するにはどうすればよい2ですか?

私が観察したのは、接続が悪い (サーバーが見つからない)ResponseUriが null で、WebResponseヘッダーに0アイテムが含まれている場合です。

EDIT
ResponseUriは null ではなく、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

ベッドリクエストの「見つかりません」例外が発生した場合、これが役立ちます。

  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 に答える
0

NetworkInterface.GetIsNetworkAvailable()Web 通話を行う前に、アクティブなネットワーク接続があるかどうかを確認するために使用しないでください。そうしないと、何も待たずに通話を無駄にすることになります。接続があっても呼び出しが失敗する場合は、Web サービスに問題があることがわかります。

私は自分のアプリでそれを使用しています。接続がない場合は、わざわざ電話をかけません。

ありがとう
マックス

于 2012-11-02T02:13:57.467 に答える