HttpHostConnectException ConnectException connection refused ErrnoException
Habe ich ein Netzwerk von Prozessen in meine Anwendung ein, wo diese Ausnahme tritt auf, und ich weiß nicht, wie dieses Problem zu beheben. Ich bereits angewendet, bestimmte Berechtigungen in mein manifest, und hier ist Sie die Berechtigungen habe ich für meine ganzen app:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
und die URI, die ich verwende, ist von unserem server in Ihre Globale IP-Adresse ist bereits. Es funktioniert im browser, aber in der app, diese Ausnahme kommt. Hier ist der stack trace:
08-12 06:15:36.234: W/System.err(862): org.apache.http.conn.HttpHostConnectException: Connection to http://xxx.xx.xxx.xxx:8080 refused
08-12 06:15:36.324: W/System.err(862): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
08-12 06:15:36.494: W/System.err(862): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
08-12 06:15:36.594: W/System.err(862): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
08-12 06:15:36.785: W/System.err(862): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
08-12 06:15:36.904: W/System.err(862): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
08-12 06:15:37.014: W/System.err(862): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
08-12 06:15:37.164: W/System.err(862): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
08-12 06:15:37.194: W/System.err(862): at com.android.app.util.Utility.getRequest(Utility.java:42)
08-12 06:15:37.284: W/System.err(862): at com.android.app.LoginActivity$LoginTask.doInBackground(LoginActivity.java:440)
08-12 06:15:37.404: W/System.err(862): at com.android.app.LoginActivity$LoginTask.doInBackground(LoginActivity.java:1)
08-12 06:15:37.534: W/System.err(862): at android.os.AsyncTask$2.call(AsyncTask.java:287)
08-12 06:15:37.744: W/System.err(862): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
08-12 06:15:37.804: W/System.err(862): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
08-12 06:15:37.944: W/System.err(862): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
08-12 06:15:38.044: W/System.err(862): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
08-12 06:15:38.164: W/System.err(862): at java.lang.Thread.run(Thread.java:856)
08-12 06:15:38.364: W/System.err(862): Caused by: java.net.ConnectException: failed to connect to /xxx.xx.xxx.xxx (port 8080): connect failed: ETIMEDOUT (Connection timed out)
08-12 06:15:38.394: W/System.err(862): at libcore.io.IoBridge.connect(IoBridge.java:114)
08-12 06:15:38.664: W/System.err(862): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
08-12 06:15:38.845: W/System.err(862): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
08-12 06:15:38.894: W/System.err(862): at java.net.Socket.connect(Socket.java:842)
08-12 06:15:39.085: W/System.err(862): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
08-12 06:15:39.154: W/System.err(862): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
08-12 06:15:39.184: W/System.err(862): ... 15 more
08-12 06:15:39.244: W/System.err(862): Caused by: libcore.io.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
08-12 06:15:39.464: W/System.err(862): at libcore.io.Posix.connect(Native Method)
08-12 06:15:39.774: W/System.err(862): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
08-12 06:15:39.804: W/System.err(862): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
08-12 06:15:39.894: W/System.err(862): at libcore.io.IoBridge.connect(IoBridge.java:112)
08-12 06:15:39.984: W/System.err(862): ... 20 more
Jede Hilfe wird geschätzt. Danke.
EDIT:
Okay, also hier ist mein Programm:
public static String getRequest(String path){
String url = http://xxx.xx.xxx.xxx:8080/SampleApi/sample-apis; //Global URL of the API
String username = "sampleuname";
String password = "samplepass";
CredentialsProvider credProvider = new BasicCredentialsProvider();
credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
new UsernamePasswordCredentials(username, password));
try{
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.setCredentialsProvider(credProvider);
HttpGet httpGet = new HttpGet(url + path);
HttpResponse httpResponse = httpClient.execute(httpGet); //Okay, so the stack trace is pointing in this line
HttpEntity httpEntity = httpResponse.getEntity();
if(httpEntity != null){
inStream = httpEntity.getContent();
String jsonString = convertStreamToString(inStream);
return jsonString;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "Request NULL";
}
und meine Berufung Asynctask:
public class LoginTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... path) {
Log.d(Constant.TAG_LOGIN, path[0]);
String apiRequestReturn = Utility.getRequest(path[0]); //So here's the other line pointed by the stack trace where I called Utility
if (apiRequestReturn.equals("")) {
Log.d(Constant.TAG_LOGIN, "WebService request is null");
return null;
} else {
Log.d(Constant.TAG_LOGIN, "WebService request has data");
return apiRequestReturn;
}
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(null);
//JSON PARSING
}
}
- DefaultClientConnectionOperator.java:183 : kann u post dieser code? & AbstractHttpClient.java
- Nicht die gleiche Anfrage arbeiten im browser?
DefaultClientConnectionOperator.java
gehört zu apache:org.apache.http.impl.conn.DefaultClientConnectionOperator
@StefandeBruijn ja, es funktioniert über den browser.- oh ja tut mit Leid, kann u nach dem code ?
- Bearbeitet meine post.
- u r mit getMethod für eine Antwort?rechts
- Ausgabe dieses (url + Pfad) und prüfen(im browser), ob es die korrekte link ? und
- ja, die Antwort ist in json
- Es ist die korrekte link da ich die gleiche URI in den browser und es funktioniert gut, ist aber in der Anwendung nicht.
- Kann u post, dass der link auf E-mail-vielleicht kann ich helfen
- Hast du eine Lösung finden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lso ich vor dem gleichen problem mit meinem Gerät. URI mit json-Antwort, funktioniert Prima im browser, sondern im Gerät, es wird eine Ausnahme ausgegeben. Ich habe einfach einen Neustart-ed meinem Gerät, dann ist es die Arbeit in der mobilen Seite. Sie versuchen, das Gerät neu zu starten.
Bitte befolgen Sie diese Lösung kann unter diesen eine Lösung Ihres Problems.
1> überprüfen Sie Ihre manifest-Datei für die internet-Berechtigung gibt oder nicht.
2> überprüfen Sie Ihre url mit dem browser vom rest-client und übergeben Sie die entsprechende Anfrage.
3> öffnen Sie die url in mobile wie:- http://your ip-Adresse/port, dass es nur eine überprüfung haben Sie eine Berechtigung oder nicht, öffnen Sie diese url in mobile.