2011-12-13 3 views
2

요즘에는 안드로이드 애플리케이션 (에뮬레이터 포함)에서 웹 서버 (PHP 페이지)로 데이터를 보내려고합니다. 첫째, 나는 에뮬레이터로이 프로그램을 시험해 보았고 성공적으로 작동했다. 그 후,이 프로그램을 전화로 시도했지만 예외가 발생했습니다 :시간 초과 예외 (안드로이드에서 PHP 페이지로 데이터 보내기)

-> IO 예외 : 작업 시간이 초과되었습니다. 내 코드의

한 부분 :

HttpClient httpclient = new DefaultHttpClient(); 

HttpPost httppost = new HttpPost("http://192.168.1.33:90/takeDatas.php"); 
try {     
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
    nameValuePairs.add(new BasicNameValuePair("enlem", latitude)); 
    nameValuePairs.add(new BasicNameValuePair("boylam", longitude)); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    httpclient.execute(httppost); 

} catch (ClientProtocolException e) { 
    Toast.makeText(ReportLocationActivity.this, "Client protokol exception ", Toast.LENGTH_LONG).show(); 
} catch (IOException e) { 
    Toast.makeText(ReportLocationActivity.this, "IO exception "+e.getMessage(), Toast.LENGTH_LONG).show(); 
} 

난 당신이 나에게 도움이되기를 바랍니다. 미리 감사드립니다.

+0

휴대 전화에 데이터가 수신됩니까 – zode64

+0

아니요,이 예외 만 표시됩니다. – iremce

+0

웹 서버가 컴퓨터의 포트 90에서 올바르게 수신 대기하고 있는지 확인 했습니까? – Squonk

답변

1

10.0.2.2는 에뮬레이터가 호스트 시스템에 지정하는 IP입니다.

그리고 일반적으로 10.x.x.x는 private IP block의 일부입니다.

그러면 에뮬레이터가 실행되는 동일한 컴퓨터에서 서버를 호스팅해야합니까? 그게 내가 에뮬레이터에서 작동하는 것을 볼 수있는 유일한 방법입니다.

어쨌든 당신의 응용 프로그램은 서버의 실제 IP를 필요로하고 당신이 당신의 네트워크 외부 작업 할 경우, 당신은 당신의 공용 IP가 필요합니다 (은 당신에게 here를 찾을 수), 및 설정 포트 포워딩 당신이 경우 포트 90에 대한 라우터가 있습니다. This site은 엄청나게 다루기 쉽지만 라우터 관련 지침이 많이 있습니다.

+1

@iremce가 고정 IP가 아닌 로컬 호스트를 사용함에 동의했습니다. 정적 IP를 얻을 수 없다면 dyn-dns.com과 같은 동적 IP 서비스를 사용하십시오. – Ozzy