2014-06-06 3 views
0

서버 연결이 다운되었거나 작동하는지 테스트해야합니다. 아래 코드를 사용하고 있지만 정확한 URL을 입력하더라도 항상 "--checkServerConnected NO--"라는 오류가 표시됩니다.서버 연결 확인

public void checkServerConnected() { 
    try{ 
     URL myUrl = new URL("http://www.google.co.uk"); 
     URLConnection connection = myUrl.openConnection(); 
     connection.setConnectTimeout(2000); 
     connection.connect(); 
    } catch (Exception e) { 
     Log.e("--","--checkServerConnected NO-- "); 
    } 
} 
+0

넣어 코드 e.printStackTrace를 클래스를 사용하지 않는 경우; 당신의 Log.e 앞에서 트랙 추적 정보를 보여주십시오. – tianwei

답변

0

매니페스트 파일에 인터넷 권한을 추가 했습니까? 인터넷 권한을 사용하는 경우

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

후 잘할 서버 관련 작업처럼 방법은 스레드에 넣어 Thread.so 주에 할 didnot 변경합니다.

public void checkServerConnected() { 
     new Thread(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 

       try{ 
        URL myUrl = new URL("http://www.google.co.uk"); 
        URLConnection connection = myUrl.openConnection(); 
        connection.setConnectTimeout(2000); 
        connection.connect(); 
       } catch (Exception e) { 
        Log.e("--","--checkServerConnected NO-- "); 
       } 
       runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         // TODO Auto-generated method stub 
         Toast.makeText(getApplicationContext(), "Connected to server", 1000).show(); 
        } 
       }); 
      } 
     }).start(); 

    } 
+0

예. 나는 인터넷에 연결할 수있다. url은 정확하지만 확실하지 않은 이유는 확실하지 않습니다. –

+0

"runOnUiThread"의 클래스를 알 수 있습니까? –

+0

이 메서드를 사용하는 클래스 (Activity)입니다. –

0

메인 스레드에서이 메서드를 호출했을 가능성이 있습니까? 안드로이드 OS4.0 이후 웹 작업은 메인 스레드에있을 수 없으므로이 메소드가 서브 쓰레드에서 호출되는지 확인하십시오.

0

URLConnection의 HttpURLConnection을 사용하십시오. 다른 조건에 대한 응답 코드를 쉽게 얻을 수 있습니다. 응답 코드가 200이면 서버가 준비 상태입니다.

0

점검 당신은 주 스레드에서 작업을 네트워킹을 수행 할 수 없습니다,

또한 매니페스트 파일에 권한을 추가 한 경우. 따라서이 코드를 새 스레드에 넣거나 스레드에서 함수를 호출하십시오.

여전히 다음 작업) (아파치 HTTP 라이브러리에서

try { 
    HttpPost post = new HttpPost(SERVER_URL); 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse response = client.execute(post); 
    Log.e("Server Response", response.getStatusLine().toString()); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

작동하지 않습니다. onCreate 메서드를 호출하면 주 스레드라는 것을 의미합니까? –

+0

OnCreate 메서드에서 실행하는 새 스레드에 넣으십시오. – user3711725