0

私の Android アプリケーションでは、サーバーの要求と応答が一貫して頻繁に行われます。WiFi でアプリを起動すると、終了して 3G で再起動します。サーバーへの要求は IO 例外で失敗します。

観察: これは、いくつかの WiFi 範囲でのみ発生します。WiFi-3G への移行中、私の家では問題なく動作します。両方の WiFi (ホームとオフィス) は WPA/WPA2 セキュリティ プロトコルを使用しますが、異なる動作を示します。IO例外が発生したときに新しいソケットを作成しようとしましたが、役に立ちませんでした。しかし、10〜15分後には正常に機能します。アプリは自動的に適切なネットワークに接続し、アプリが起動します!!

ここで何が問題になる可能性がありますか?

ここにコードのスニペットがあります

public String readFromUrl(String urlString) {

    try {
        URL url = new URL(urlString);
        urlConnection = (HttpURLConnection) url.openConnection();

        BufferedReader in = new BufferedReader(new  InputStreamReader(urlConnection.getInputStream()));
        String line;
        while ((line = in.readLine()) != null)
            output.append(line);
        return output;
    } catch (IOException e) {
        e.printStackTrace();
    }
}

例外で失敗します:

java.net.SocketTimeoutException: Connection timed out
 W/System.err( 2615): at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
 W/System.err( 2615): at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)
 W/System.err( 2615): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204)
 W/System.err( 2615): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)
 W/System.err( 2615): at java.net.Socket.connect(Socket.java:1002)
 W/System.err( 2615): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75)
 W/System.err( 2615): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
4

1 に答える 1

0

電話が 3G から Wi-Fi に切り替わったときに、接続が進行中である可能性があります。現在、電話は 3G から WiFi にハンドオーバーする方法を認識していないため、最初に 3G 接続を切断する必要があるため、IOException が発生します。

于 2012-04-17T08:28:30.627 に答える