2012-04-16 4 views
0

Android 애플리케이션에서 일관되고 빈번한 서버 요청 및 응답이 있습니다. WiFi로 앱을 시작한 다음 종료하고 3G로 다시 시작하십시오. IO 예외로 인해 서버에 대한 요청이 실패합니다.Android : I/O 예외 및 일부 WiFis에 대해 WiFi에서 3G로 전환 할 수 없습니다.

관찰 : 이것은 일부 WiFi 영역에서만 발생합니다. WiFi-3G 전환 도중 내 집에서 완벽하게 작동합니다. WiFi (가정 및 사무실) 모두 WPA/WPA2 보안 프로토콜을 사용하지만 다른 동작을 나타냅니다. IO 예외가 발생할 때 새 소켓을 만들려고했지만 도움이되지 않습니다. 그러나 그것은 10-15 분 후에 잘 작동합니다. 앱이 자동으로 올바른 네트워크에 연결되고 앱이 실행됩니다.

여기에 어떤 문제가있을 수 있습니까?

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) 

답변

0

무엇 아마 일어나고있는 것은 당신이 전화 스위치 3G에서 와이파이에 진행중인 접속을 가지고있다 : 여기

그것은 예외와 함께 실패 코드

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(); 
    } 
} 

의 조각입니다. 전화는 3G에서 WiFi로 오늘 어떻게 넘겨야할지 모릅니다. 따라서 3G 연결이 먼저 끊어 져야합니다. 따라서 IOException이 발생합니다.

+0

당신이 말한 것을 뒷받침하는 참조를 링크 할 수 있습니까? 그리고 스위칭 네트워크에서 정확히 어떻게 연결을 끊었습니까? 네트워크 변경 사항이있을 때 ConnectivityManager 브로드 캐스트를 처리하기위한 인 텐트 필터를 추가하고 해당 변경 사항이 연결된 경우 연결을 닫으시겠습니까? – ZeCodea

관련 문제