2012-05-20 27 views
8

estoy usando el siguiente código en la máquina virtual de Android¿Por qué estoy recibiendo el HttpHostConnectException

try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://10.0.2.2/ReadingFromServer.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection"+e.toString()); 
     } 

estoy consiguiendo el HttpHostConnectException. ¿No sabes por qué? He cambiado la dirección en la url de 127.0.0.1 a 10.0.2.2, pero sigo recibiendo esa excepción. Tengo el servidor wamp instalado en mi computadora y el archivo "ReadingFromServer.php" se coloca en la carpeta "www".

Aquí es el completo seguimiento de la pila

05-20 20:40:32.218: W/System.err(681): org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2 refused 
05-20 20:40:32.248: W/System.err(681): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183) 
05-20 20:40:32.258: W/System.err(681): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
05-20 20:40:32.268: W/System.err(681): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
05-20 20:40:32.278: W/System.err(681): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
05-20 20:40:32.288: W/System.err(681): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
05-20 20:40:32.298: W/System.err(681): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
05-20 20:40:32.308: W/System.err(681): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
05-20 20:40:32.318: W/System.err(681): at com.test.TestProjectActivity.onCreate(TestProjectActivity.java:56) 
05-20 20:40:32.328: W/System.err(681): at android.app.Activity.performCreate(Activity.java:4465) 
05-20 20:40:32.338: W/System.err(681): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
05-20 20:40:32.348: W/System.err(681): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
05-20 20:40:32.358: W/System.err(681): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
05-20 20:40:32.368: W/System.err(681): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
05-20 20:40:32.378: W/System.err(681): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
05-20 20:40:32.388: W/System.err(681): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-20 20:40:32.398: W/System.err(681): at android.os.Looper.loop(Looper.java:137) 
05-20 20:40:32.408: W/System.err(681): at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-20 20:40:32.418: W/System.err(681): at java.lang.reflect.Method.invokeNative(Native Method) 
05-20 20:40:32.428: W/System.err(681): at java.lang.reflect.Method.invoke(Method.java:511) 
05-20 20:40:32.438: W/System.err(681): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-20 20:40:32.448: W/System.err(681): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-20 20:40:32.448: W/System.err(681): at dalvik.system.NativeStart.main(Native Method) 
05-20 20:40:32.468: W/System.err(681): Caused by: java.net.ConnectException: socket failed: EACCES (Permission denied) 
05-20 20:40:32.488: W/System.err(681): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181) 
05-20 20:40:32.498: W/System.err(681): ... 21 more 
05-20 20:40:32.508: W/System.err(681): Caused by: java.net.SocketException: socket failed: EACCES (Permission denied) 
05-20 20:40:32.528: W/System.err(681): at libcore.io.IoBridge.socket(IoBridge.java:573) 
05-20 20:40:32.538: W/System.err(681): at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201) 
05-20 20:40:32.548: W/System.err(681): at java.net.Socket.checkOpenAndCreate(Socket.java:663) 
05-20 20:40:32.558: W/System.err(681): at java.net.Socket.connect(Socket.java:807) 
05-20 20:40:32.578: W/System.err(681): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 
05-20 20:40:32.578: W/System.err(681): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144) 
05-20 20:40:32.588: W/System.err(681): ... 21 more 
05-20 20:40:32.598: W/System.err(681): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied) 
05-20 20:40:32.628: W/System.err(681): at libcore.io.Posix.socket(Native Method) 
05-20 20:40:32.658: W/System.err(681): at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181) 
05-20 20:40:32.658: W/System.err(681): at libcore.io.IoBridge.socket(IoBridge.java:558) 

Gracias.

+3

¿Cuál es el mensaje de excepción que le dice? – NominSim

+0

Vea si hay una sobrecarga en la clase Log que tiene un método que puede pasarle la excepción completa (e), de esa manera probablemente también registre un seguimiento de la pila. Log4j hace esto, imagino que Android tiene algo similar. –

+0

Utilice la función 'e.printStacktrace();' para obtener toda la excepción con más detalles y actualizar su pregunta con toda la traza. –

Respuesta

14

¿Declaraste el permiso de Internet en AndroidManifest.xml?

Es necesario poner lo siguiente en el permiso de Internet AndroidManifest.xml

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

sí, he declarado el permiso de Internet en AndroidManifest.xml, pero no funciona para mí. –

+0

Revisa el permiso. Tu error realmente parece un permiso faltante. –

+0

Ahora, agregando el permiso, obtengo android.os.NetworkOnMainThreadException. ¿Qué pasa ahora? –

1

a su aplicación mediante la adición de esto bajo manifest etiqueta en su tráfico AndroidManifest.xml

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

lo contrario Android bloqueará Internet desde su aplicación

Cuestiones relacionadas