2012-03-19 14 views
0

更新:Android HttpGet:リクエストを実行する前にチェックする必要がある例外は何ですか?

String xmlList = null; 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      try { 

       HttpGet request = new HttpGet(URL); 
       HttpResponse response = null; 
       response = httpClient.execute(request); 
       //HttpResponse httpResponse = httpClient.execute(request); 
       HttpEntity httpEntity = response.getEntity(); 
       xmlList = EntityUtils.toString(httpEntity); 

      } 
      catch (MalformedURLException e) { 
       xmlList = "URL: is a malformed URL"; 
       e.printStackTrace(); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
       xmlList = "URL: UnsupportedEncodingException"; 
      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
       xmlList = "URL: ClientProtocolException"; 
      } catch (SocketTimeoutException e) { 
       e.printStackTrace(); 
       xmlList = "URL: SocketTimeoutException"; 
      } catch (ConnectTimeoutException e) { 
       e.printStackTrace(); 
       xmlList = "URL: ConnectTimeoutException"; 
      } catch (IOException e) { 
       xmlList = "URL: IOException"; 
       e.printStackTrace(); 
      } 
      finally { 
       httpClient.getConnectionManager().shutdown(); 
      } 
      // return XML 
      return xmlList; 

更新終了

私は、ウェブサイトからデータを読み込み、私は例外が要求を実行する前に確認するべきであるされているかを知りたいアプリを構築していますか?

私は思っています例外:ここ

1) bad url 
2) host not responding 
3) time out 
.... 
.... 

は私のコードです:

DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpGet request = new HttpGet(SongsManager1.URL); 
HttpResponse response = null; 
response = httpClient.execute(request); 
//HttpResponse httpResponse = httpClient.execute(request); 
HttpEntity httpEntity = response.getEntity(); 
xmlList = EntityUtils.toString(httpEntity); 
+1

リクエストを行う前に、ホストが応答していないかどうかを確認します(タイムアウトとはどのように違いますか)。 –

+0

あなたは正しいホストが応答しておらず、タイムアウトが同じであると思っていませんでした。 –

答えて

0

あなたは以下のチェックを行うことができ、

  1. ClientProtocolException
  2. IOException - これは、内部的に多くの例外をキャッチします。あなたが要求を送信する前に、ネットワーク接続性チェックを行うことができますURISyntaxException

  • アンドロイドのドキュメントで詳細をチェックアウトすることができます。詳細はzaplの投稿に記載されているリンクにあります。

  • +0

    私の質問が更新されました。例外をキャッチする正しい方法ですか? –

    +0

    それはたくさんあるが、よく見える。あなたは、それぞれのケースで異なるsomethignを個別に実行したい場合にのみ、それらをキャッチする必要があります。私はあなたに、なぜ要求が失敗したのかをユーザーに正確に伝えたいと仮定しています。その場合、これはうまく見えます。 :) – Shubhayu

    1

    あなたはどんなアプリユーザーにメッセージを表示network connectivityがあるかどうかをチェックし、もしできません試行することはできません。 しかし、どのようなあなたがあなたのクエリの結果から得るかを見るため、さらに検査が不要である:例外(例えば、悪いURL、タイムアウト、...)、ステータスコードなど

    関連する問題