0

HttpUrlConnectionを使用し、サーバーと美しく接続するアプリケーションに取り組んでいますが、サーバーからデータをフェッチすると、接続タイムアウトIOExceptionが表示されます。

インターネットとネットワークのアクセス許可は、android.manifestですでに設定されています。androidエミュレーターに表示されるバーはありません(これは何かを言いますか)。

developer.android.comで読んでください:エミュレーターの機能制限は次のとおりです:-ネットワーク接続状態を決定するためのサポートなし-そして他のいくつか....

どんな助けでも大歓迎です。そして、私はこれをテストするための実際のデバイスを持っていません。

受信したサーバー情報はlogcatに出力されます。

ありがとう...

コードは次のとおりです。

URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
try {
    Log.i(INFO_TAG, "Received server:" + conn.toString());
    conn.setInstanceFollowRedirects(true);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Content-length", "0");
    conn.setUseCaches(false);
    conn.setAllowUserInteraction(false);
    conn.setConnectTimeout(25000 /* milliseconds */);
    conn.setReadTimeout(15000/* 10000 *//* milliseconds */);
    // conn.setDoInput(true);
    // Starts the query
    conn.connect();
    status = conn.getResponseCode();
    Log.d(DEBUG_TAG, "Status recevied is: " + conn.getResponseCode());
    responseCode = status;
    if (responseCode == 200) {
        Log.i(INFO_TAG, "URL Connection OK");
        contentIs = conn.getInputStream();
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(contentIs));
        String line;
        while ((line = reader.readLine()) != null) {
            builder.append(line);
            Log.i(INFO_TAG, "Data Read is: " + line);
        }
    } else {
        Log.d(DEBUG_TAG, "Could not read data from web server");
        Log.e(ConnectAndGetData.class.toString(),
            "Failed to download content");
    }
}// end of try
catch (Exception ex) {
    // This is currently being printout
    Log.d(DEBUG_TAG, "Received an exception" + ex.toString(), ex);
    ex.printStackTrace();
    throw new IOException("Error Connecting" + ex.toString());// "Error connecting");
} finally {
    if (contentIs != null) {
        contentIs.close();
        conn.disconnect();
    }
}

もう1つ、接続タイムアウト例外がスローされ、次の行の情報はデバッグされません。Log.d(DEBUG_TAG、 "受信したステータスは次のとおりです:" + conn.getResponseCode());

4

3 に答える 3

1

問題は上記のコードではなく、サーバーコード(主な原因)でした。これでWebサービスが実装され、上記のコードは正常に機能しています。

コメントありがとうございます...

于 2012-09-25T02:07:38.353 に答える
0

あなたは書く必要があります

conn.setDoInput( true );この行の後

conn.setConnectTimeout(25000 /* milliseconds */);
conn.setReadTimeout(15000/*10000*/ /* milliseconds */);

このURLConnectionが入力を許可するかどうかを示すフラグを設定します。

于 2012-09-10T06:31:21.340 に答える
0

エミュレータはサーバーからの応答を受信できません。ネットワーク接続に問題があると思います。プロキシ設定を確認してください。

于 2012-09-10T06:33:04.727 に答える