2010-05-30 2 views
0

내 응용 프로그램은 다음 코드를 사용하여 웹 사이트에 연결하고 처리 할 웹 페이지를 다운로드합니다.신청 3G 연결이 사용되는 경우 HANGS UP (WiFi가 OK 임)

HttpURLConnection c = (HttpURLConnection) url.openConnection(); 
c.setRequestMethod("GET"); 
c.setRequestProperty("User-Agent", "Mozilla/3.0 (compatible; MSIE 4.0; Windows NT)"); 
c.setRequestProperty("Accept-Language", "zh-hk"); 
c.setRequestProperty("Connection", "Keep-Alive"); 
c.setConnectTimeout(6000); // mTimeout is in seconds 

intTries = 3; 

do { 
    c.connect(); 
    if (c.getResponseCode() == 200) { 
     break; 
    } 
    else { 
     intTries --; 
    }  
} while (intTries > 0); 

코드는 주 스레드에서만 실행됩니다. 와이파이가 사용되고 있다면, 그것은 훌륭하고 깨끗합니다. 3G 연결이 사용되는 경우 가끔씩 연결되거나 응용 프로그램이 연결될 수 없습니다.

WiFi와 3G를 처리 할 때 중요한 차이점이 있습니까?

감사합니다.

답변

4

코드는 주 스레드에서만 실행됩니다.

그건 좋은 생각이 아닙니다. AsyncTask 또는 다른 것을 사용하여 주 스레드의 논리를 해제하십시오. 또한 HttpUrlConnection 대신 HttpClient을 사용하는 것도 고려해 볼 수 있습니다. 이는 Android에 내장되어 있기 때문입니다.

기본 제공 브라우저 응용 프로그램을 사용하여 URL을 테스트 할 수도 있습니다. 유사한 결과를 얻으면 무선 통신 사업자와 도달하려는 사이트 사이에 어떤 일이 발생합니다.