importar - org.apache.http.conn.HttpHostConnectException: la conexión a http:// localhost se negó en android
importar httpclient android studio (13)
Estoy haciendo una aplicación que carga imágenes al servidor y actualiza su base de datos al servidor en Android mientras se ejecuta, muestra un error
Connection to http://localhost refused
y muchos más errores, investigué este problema y encontré en lugar de proporcionar la conexión URL
http://localhost/... provide the link as http://10.0.2.2/...
y lo hice pero el problema es el mismo error más aquí:
E/org.apache.http.conn.HttpHostConnectException(4318): Connection to http://localhost refused
E/org.apache.http.conn.HttpHostConnectException(4318): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
E/org.apache.http.conn.HttpHostConnectException(4318): at com.example.android.photobyintent.ViewRecipients.uploadFile(ViewRecipients.java:325)
E/org.apache.http.conn.HttpHostConnectException(4318): at com.example.android.photobyintent.ViewRecipients$1.run(ViewRecipients.java:238)
E/org.apache.http.conn.HttpHostConnectException(4318): at java.lang.Thread.run(Thread.java:856)
E/org.apache.http.conn.HttpHostConnectException(4318): Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
E/org.apache.http.conn.HttpHostConnectException(4318): at libcore.io.IoBridge.connect(IoBridge.java:114)
E/org.apache.http.conn.HttpHostConnectException(4318): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
E/org.apache.http.conn.HttpHostConnectException(4318): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
E/org.apache.http.conn.HttpHostConnectException(4318): at java.net.Socket.connect(Socket.java:842)
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
E/org.apache.http.conn.HttpHostConnectException(4318): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
E/org.apache.http.conn.HttpHostConnectException(4318): ... 8 more
E/org.apache.http.conn.HttpHostConnectException(4318): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
E/org.apache.http.conn.HttpHostConnectException(4318): at libcore.io.Posix.connect(Native Method)
E/org.apache.http.conn.HttpHostConnectException(4318): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
E/org.apache.http.conn.HttpHostConnectException(4318): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
E/org.apache.http.conn.HttpHostConnectException(4318): at libcore.io.IoBridge.connect(IoBridge.java:112)
E/org.apache.http.conn.HttpHostConnectException(4318): ... 13 more
el código para subir archivos es:
public int uploadFile(ArrayList<String> sourceFileUri, String info, String latitude, String longitude, String id) throws IOException {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost("http://10.0.2.2/deliverysystem/order/add");
MultipartEntity entity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("returnformat", new StringBody("json"));
System.out.println(sourceFileUri.size());
for(int i=0;i<sourceFileUri.size();i++){
String sourceFile = sourceFileUri.get(i);
entity.addPart("uploaded_file"+(i+1), new FileBody(new File(sourceFile)));
}
entity.addPart("fld_delivery_id", new StringBody(id));
entity.addPart("fld_delivery_location", new StringBody(info));
entity.addPart("fld_latitude", new StringBody(latitude));
entity.addPart("fld_longitude", new StringBody(longitude));
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost, localContext);
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse = reader.readLine();
return 1;
} catch (Exception e) {
if (dialog.isShowing())
dialog.dismiss();
Log.e(e.getClass().getName(), e.getMessage(), e);
return 1;
}
}
mientras se depura el código alcanza hasta:
httpPost.setEntity(entity);
y muestra una excepción después de esta línea, es decir, en esta declaración:
HttpResponse response = httpClient.execute(httpPost, localContext);
¿Alguien podría ayudarme con esto?
Compruebe que está ejecutando el dispositivo Android en la misma red. Esto solucionará el problema. ¡¡¡que te diviertas!!!
Cuando prueba con un dispositivo, desea agregar la dirección IP de su PC.
en la pc se ejecuta en cmd Ipconfig
en el terminal de ejecución ubuntu ifconfig
A continuación, utilice "http://your_pc_ip_address:8080/register"
de usar "http://10.0.2.2:8080/register"
in my pc = 192.168.1.3
y también agregue el permiso de internet para Manifest
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Dos soluciones para este error:
1. agrega este permiso en tu androidManifest.xml de tu proyecto de Android
<uses-permission android:name="android.permission.INTERNET"/>
2. Encienda primero la conexión a Internet de su dispositivo.
Estaba enfrentando exactamente el mismo problema e hice los siguientes cambios a mi URL después de lo cual funcionó perfectamente bien.
De:
http://localhost/Image4android/get_all_images.php
A:
http://192.168.1.2/Image4android/get_all_images.php
where the ip: 192.168.1.2 is IPv4 address. In windows Run > CMD > Ipconfig
Estoy usando PHP para el servicio web y Android 4.x. dispositivo para conectarse al servicio web. Tuve un problema similar en el que usar 10.0.2.2
funcionó bien con el emulador pero no se pudo conectar desde el dispositivo. La solución que funcionó para mí es: Encuentre la IP de su computadora ... digamos 192.168.0.103
Busque el puerto de su apache ... digamos 8080
Ahora abra httpd.conf y ubique la siguiente línea Escuche 127.0.0.1:8080
Después de agregar esta línea Siguiendo Listen 192.168.0.103:8080
Eso es todo. ¡Ahora si usas 192.168.0.103:8080
en tu código de Android, se conectará!
Tuve un problema similar, luego descubrí que el wifi no estaba conectado en mi teléfono inteligente. Después de que encendí el wifi y me conecté a la red similar (con mi computadora portátil), hubo otro problema: el firewall de la computadora portátil estaba bloqueando las conexiones entrantes. Una vez que arreglé el firewall, pude comunicarme desde mi aplicación de Android con el servicio web que se ejecuta en la computadora portátil.
Una de las cosas básicas y simples que conducen a este error es: Sin conexión a Internet
Encienda primero la conexión a Internet de su dispositivo.
(Puede ser que nos olvidemos de hacerlo)
intente agregar el permiso fuera de la etiqueta de la aplicación del manifiesto, además de las respuestas antes mencionadas de cambiar localhost a 10.0.2.2:8080
para el uso del servidor 10.0.2.2
para host local ej. 10.0.2.2/phpMyAdmin
y para el uso de tomcat 10.0.2.2:8080/server
si está usando un emulador para ejecutar su aplicación para el servidor local. mencione la dirección ip
local como 10.0.2.2
y tenga que dar permiso de Internet a su aplicación:
<uses-permission android:name="android.permission.INTERNET" />
use 127.0.0.1
lugar de localhost
<uses-permission android:name="android.permission.INTERNET"/>
agregue esta etiqueta arriba en AndroidManifest.xml de su proyecto Android, y estará bien.
http://localhost
El host anterior ya está ocupado por el emulador en el que está ejecutando el código. Si desea acceder al host local de su computadora, use la dirección IP como http://10.0.2.2:8080/
.
Para más detalles, consulte este link .