2012-04-08 16 views
0

私はアンドロイド3.1にアプリケーションを作成しています。アプリケーションをテストするために銀河タブ10.1を使用しています。HttpUrlConnectionを使用して特定のURLから情報をダウンロードするとエラーが発生する

OpenHttpConnection()という関数を書いて、特定のWebサイトから情報を取得しました。コードスニペットは次のとおりです。

private InputStream OpenHttpConnection(String urlString) throws IOException { 
    InputStream in = null; 
    int response = -1; 

    URL url = new URL(urlString); 
    String host = url.getHost(); 
    InetAddress address = InetAddress.getByName(host); 
    String ip = address.getHostAddress(); 
    Toast.makeText(this, "ip address: " + ip.toString(), Toast.LENGTH_SHORT).show(); 

    try { 
     HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); 
     httpConn.setAllowUserInteraction(false); 
     httpConn.setInstanceFollowRedirects(true); 
     httpConn.setConnectTimeout(5 * 1000); 
     httpConn.setRequestMethod("GET"); 
     Toast.makeText(this, "prepare for connecting", Toast.LENGTH_SHORT).show(); 
     httpConn.connect(); 
     Toast.makeText(this, "connecting established", Toast.LENGTH_SHORT).show(); 
     response = httpConn.getResponseCode(); 
     if (response == HttpURLConnection.HTTP_OK) { 
      in = httpConn.getInputStream(); 
     } 
    } catch (Exception ex) { 
     throw new IOException("Error connecting"); 
    } 
    return in; 
} 

"httpConn.connect()"という行が実行されているときにエラーが発生します。私はこの質問を見つけ、多くの人々がこの問題を抱えていることを知り、彼らはDNSの問題だと言いました。それから私はこのURLのIPアドレスを取得しようとしたが、失敗した、何かが間違っていた。私はすでにこのようにAndroidManifest.xmlにアクセス許可を追加しています:

<uses-permission android:name="android.permission.INTERNET"/> 

私はいくつかの許可を忘れましたか?

タブレットを使用してインターネットに正常にアクセスできます。タブレットのDNSはパソコンと同じで、1つのLANにあります。

私は非常に混乱しており、解決するのに役立ちますか?

;)THX

+0

答えをOpenHttpConnectionまたはLogcat –

+0

投稿urlを記述してください。しかし、私にとっては役に立たないと思います。私の問題は、アプリケーションが正しいIPアドレスを取得するためにDNSを使用することができないということです。そして、このコードと操作を「Androidタブレットアプリケーション開発の開始」という書籍からコピーしますが、HandlerやAsyncTaskについては言及していません。とにかくThx。 –

答えて

0

私はおそらく2潜在的な問題があることを伝えることができますので、私は最近、これをやってきた:

  1. あなたはあなたが背景にこれをやっているようにする必要がありスレッドHandlerまたはAsyncTaskのいずれかを使用します。

  2. UIスレッドで行う必要がある場合は、Strict modeをオフにする必要があります。

この偉大tutorial in running background threads in androidをチェックし、チュートリアルのAyncTaskセクションは、実際にはそう非常に関連性があるWebページをダウンロードします。私は最近それを試して、それは動作します。

+0

thxで渡しているエラー(Logcatにチェック) –

+0

LogCatから取得したエラーを投稿する必要があります。しかし、私はそれが 'StrictMode'と関係しているかもしれないと思っています。あなたが見ている投稿は分かりませんが、WIFIのために 'MultiCast'を有効にしていると言われているかもしれません。これは許可があれば' DNS 'ではなく 'mDN'と関係があることを意味します'CHANGE_WIFI_MULTICAST_STATE'と呼ばれます。 – Ali

+0

ああ、あなたが正しいです、厳密なモードをオフにした後、アプリケーションが正常に実行されます。多くのThx、と私の急いでお詫び申し上げます。 –

関連する問題