안드로이드 앱에서 실행중인 웹 서버에 연결하려고합니다. 그러나 어떤 이유로 든 실패하고 있습니다.안드로이드에서 HttpURLConnection 사용하기
정상적으로 웹 페이지에 연결할 수 있으며 휴대 전화의 브라우저를 사용하여 아래 코드를 사용하여 Google에 연결할 수 있지만 어떤 이유로 내 코드가 내 웹 서버에 연결되지 않습니다. 8080에 서버를 호스팅하면 오류 코드 503이 매번 발생합니다.이 코드는 8080 (이 방법이 바람직합니다)에 호스트하면 아래의 시간 초과 예외가 발생합니다.
03-05 20:12:22.432: WARN/System.err(29254): java.net.SocketException: The operation timed out
03-05 20:12:22.602: WARN/System.err(29254): at org.apache.harmony.luni.platform.OSNetworkSystem.connectSocketImpl(Native Method)
03-05 20:12:22.602: WARN/System.err(29254): at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.java:125)
03-05 20:12:22.602: WARN/System.err(29254): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:227)
03-05 20:12:22.612: WARN/System.err(29254): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:521)
03-05 20:12:22.612: WARN/System.err(29254): at java.net.Socket.connect(Socket.java:1019)
03-05 20:12:22.612: WARN/System.err(29254): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:67)
03-05 20:12:22.612: WARN/System.err(29254): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$ConnectionPool.getHttpConnection(HttpConnectionManager.java:151)
03-05 20:12:22.612: WARN/System.err(29254): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager.getConnection(HttpConnectionManager.java:73)
03-05 20:12:22.612: WARN/System.err(29254): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getHTTPConnection(HttpURLConnection.java:826)
03-05 20:12:22.612: WARN/System.err(29254): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:812)
03-05 20:12:22.612: WARN/System.err(29254): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getResponseCode(HttpURLConnection.java:1275)
03-05 20:12:22.612: WARN/System.err(29254): at com.project.library.remailer.ServerSelect.downloadDirectory(ServerSelect.java:84)
03-05 20:12:22.622: WARN/System.err(29254): at com.project.main.NewMessage$3$1$1.run(NewMessage.java:156)
코드는 다음과 같습니다
try {
URL url = new URL(directoryLocation);
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
// The line below is where the exception is called
int response = httpURLConnection.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
// Response successful
InputStream inputStream = httpURLConnection.getInputStream();
// Parse it line by line
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream));
String temp;
while ((temp = bufferedReader.readLine()) != null) {
// Parsing of data here
}
} else {
Log.e("SAMES", "INCORRECT RETURN CODE: " + response);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
나는 내가 이전과 시간 제한 예외를 같은 오류가 포트 8080에 대한 CommonsWare에 의해 제안 된 링크의 코드를하려고하면. 포트 80의 경우 다음 예외가 발생합니다.이 두 가지 오류는 모두 url.openStream()에서 발생합니다.
포트 80 예외 :
I은 또한 다음과 같은 코드를 사용하여 시도03-06 11:53:53.296: WARN/System.err(639): java.io.FileNotFoundException: http://64.197.194.165:80/path
03-06 11:53:53.376: WARN/System.err(639): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1064)
03-06 11:53:53.376: WARN/System.err(639): at java.net.URL.openStream(URL.java:674)
03-06 11:53:53.376: WARN/System.err(639): at com.project.library.remailer.ServerSelect.downloadDirectory(ServerSelect.java:118)
03-06 11:53:53.376: WARN/System.err(639): at com.project.main.NewMessage$3$1$1.run(NewMessage.java:156)
그러나
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(directoryLocation);
try
{
HttpResponse response = client.execute(request);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line;
while((line = reader.readLine()) != null) {
Log.e("SAMES", line);
}
}
catch(Exception e)
{
e.printStackTrace();
}
포트 8080에 대해 동일한 시간 초과 오류가 발생했다 client.execute 때 발생 (응답)이 호출됩니다.
03-06 13시 10분 :
포트 (80)를 들어 나는, 그러나 그것은 페이지에 말했다 중요한 것은 인 HTML 편집을 많이, 연결할 수 없음을 말한다 웹 페이지를 얻을 : 23.576 : 오류/SAMES (1267) : 웹 서버가 다운되었거나, 너무 바빠서, 요청에 응답하지 못하게하는 다른 문제가 발생했을 수 있습니다. 나중에 다시 시도 할 수도 있습니다.
필요한 경우 웹 서버 코드도 제공 할 수 있습니다. 또한 문제가 아니므로 매니페스트에 인터넷을 추가했습니다. –
에뮬레이터를 사용하고 있습니까? – Rintoul
아니요. HTC Hero를 사용하고 있습니다. –