Android: ksoap, "UnknownHostException: host no resuelto" dependiendo de la API
gracias por tu atención.
Tengo un problema en usar ksoap2 para llamar a un servicio web vía android.
- Enviar una imagen de Android a un servicio Web ASP.NET
- Envío de imágenes de la galería al servicio web mediante SOAP
- Crear webservice en drupal
- Cómo saber cuándo finaliza una llamada de Retrofit
- Problema del API del cliente Jersey
Tengo alguna función para llamar a un servicio web.
public String CallWebServiceFunction() { String WSDL_TARGET_NAMESPACE = "http://MyWeb.com/"; String SOAP_ADDRESS = "http://MyWeb.com/pvws.asmx"; String SOAP_ACTION = "http://MyWeb.com/SoapAction"; String OPERATION_NAME = "SoapAction"; SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME); PropertyInfo prop1 = new PropertyInfo(); prop1.setName("prop1"); prop1.setValue("1"); request.addProperty(prop1); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); Object response=null; try { httpTransport.call(SOAP_ACTION, envelope); response = envelope.getResponse(); } catch (Exception exception) { response=exception.toString(); } return response.toString(); }
Cuando utilizo el emulador (o el dispositivo verdadero), que usando la API 16 o arriba (Android 4.x) – todo está bien , la función consigue la respuesta correcta del webservice. Pero cuando uso emulador (o dispositivo real) con API 7 (Android 2.x) – entonces tengo una excepción
"Java.net.UnknownHostException: El host no está resuelto: MyWeb.com:80"
Utilizo el mismo código en ambos casos, intentando uno tras otro – y obtengo resultados diferentes
¿Alguien tiene alguna idea?
UPD1 : La sección de permisos de mi manifiesto es
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
UPD2 : Hipótesis . Inicialmente creé mi aplicación para targetSdkVersion = 16. Por lo tanto, uso código multi-threaded, cuando llamo webservice a través de Internet. Tal vez, cuando funciona con API7, el código fuente no debe ser multi-threaded?
UPD3 : La hipótesis estaba equivocada. Llamar a webservice desde el hilo principal causa la misma excepción.
Pero me di cuenta, que cuando ejecuto mi proyecto en otro equipo – funciona correctamente. A pesar de que uso el mismo código.
- Cómo manejar la conexión de red lenta en Java / Android
- Respuesta de retorno de loopj asynchttpclient de Android
- Android loopj + GCMIntentService enviar mensaje a un Handler en un hilo muerto
- Cómo sincronizar grandes listas entre cliente y servidor
- Java.net.UnknownHostException: No se puede resolver el host "<url>": ninguna dirección asociada con hostname y End of input en el carácter 0 de
- KSOAP2 java.lang.RuntimeException: No se puede serializar
- Conectar con un emulador de Android a la localhost webservice
- KSoap2 Android recibe un arreglo de objetos
UnknownHostException:host is unresolved
Asegúrate de haber añadido permiso en tu AndroidManifest.xml
como este
<uses-permission android:name="android.permission.INTERNET" />
Y también Asegúrese de que su adición dentro <manifest>
etiqueta no dentro de otras etiquetas como <application>
etc
PD.
Asegúrese también de los siguientes permisos
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
Creo que para Android 2.x ausente android.permission.READ_PHONE_STATE
.
Intentalo,
Compruebe la conexión de datos o el wifi está activado
A continuación, vaya a manifestar y comprobar la Internet
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
- Deteniendo periódicamente AsyncTask
- No se encontró ninguna actividad del lanzador. No se puede obtener widget para trabajar