514 votos

Cómo llamar a servicios web SOAP en Android

Estoy teniendo un montón de problemas para encontrar buena información sobre cómo llamar a un estándar SOAP/WSDL del servicio web con Android. Todo lo que he sido capaz de encontrar son muy complicada documentos y las referencias a "kSoap2" y, a continuación, algunos poco sobre el análisis de todo manualmente con el SAXO. OK, que bien, pero es del 2008, por lo que pensé que debe haber alguna buena biblioteca para llamar a servicios web estándar.

El servicio web es básicamente uno creado en NetBeans. Me gustaría tener el soporte IDE para la generación de la plomería de clases. Solo me falta la forma más fácil y más elegante forma de contacto con una WSDL web basado en el servicio desde un teléfono basado en Android.

234voto

foxxtrot Puntos 6491

Android no proporciona ningún tipo de JABÓN de la biblioteca. Usted puede escribir su propia cuenta, o usar algo como kSOAP 2. Como nota, otros han sido capaces de recopilar y utilizar kSOAP2 en sus propios proyectos, pero no he tenido.

Google ha demostrado, hasta la fecha, poco interés en la adición de una biblioteca de SOAP para Android. Mi sospecha es que prefieren apoyar a las tendencias actuales en la Web de los Servicios hacia el RESTO de los servicios basados en, y el uso de JSON como formato de encapsulación. O, el uso de XMPP para la mensajería. Pero eso es sólo una conjetura.

Servicios web basados en XML son un poco tarea no trivial en Android en este momento. No saber NetBeans, yo no puedo hablar de las herramientas disponibles que hay, pero estoy de acuerdo en que una mejor biblioteca debe estar disponible. Es posible que el XmlPullParser ahorrará el uso de SAX, pero no sé mucho acerca de eso.

97voto

Neil D Puntos 1321

org.apache.http.impl.client.DefaultHttpClient viene en el SDK de Android por defecto. Que te conecta con el WSDL.

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://www.example.com/" + URL);
HttpResponse response = httpClient.execute(httpGet, localContext);

58voto

Viktor Brešan Puntos 2458

Es cierto que debido a la sobrecarga de JABÓN no es la mejor opción para el intercambio de datos con dispositivos móviles. Sin embargo, puede que te encuentres en la situación en la que usted no puede controlar el formato de salida del servidor.

Por lo tanto, si usted tiene que pegarse con JABÓN, hay una librería kSOAP2 parcheado para Android aquí:
http://code.google.com/p/ksoap2-android/

30voto

Priyanjan Puntos 249

Para llamar a un servicio web desde un dispositivo móvil (especialmente en un teléfono Android), yo he usado de una manera muy sencilla de hacerlo. No he usado ningún cliente de servicios web de la API en un intento de llamar al servicio web. Mi planteamiento es el siguiente para hacer una llamada.

  1. Crear un simple HTTP conexión por el uso de la API estándar de Java HttpURLConnection.
  2. Formar una solicitud SOAP. (Usted puede hacer ayuda de SOAPUI para hacer un JABÓN solicitud.)
  3. Conjunto de doOutPut bandera de la verdad.
  4. Conjunto de encabezado HTTP de valores como la la longitud de contenido, Contenido el tipo y el agente de Usuario. No te olvides para establecer la longitud de Contenido de valor como es obligatorio.
  5. Escribir todo el JABÓN de solicitud para el flujo de salida.
  6. Llamar al método para establecer una conexión y recibe la respuesta (En mi caso he utilizado getResonseCode).
  7. Si su respuesta recibida el código como
    1. Esto significa que usted se logró, llame a servicio web.
  8. Ahora tome un flujo de entrada en el mismo Conexión HTTP y recibir la objeto string. Este objeto string es una respuesta SOAP.
  9. Si el código de respuesta es otro que 200, a continuación, tomar un ErrorInput flujo en mismo HTTPobject y recibir la error si lo hubiere.
  10. Analizar la respuesta recibida el uso de SAXParser (en mi caso) o DOMParaser o cualquier otro análisis mecanismo.

He implementado este procedimiento para el teléfono Android, y que está funcionando correctamente. Soy capaz de analizar la respuesta, incluso si se trata de más de 700 KB.

28voto

jasonhudgins Puntos 1732

El JABÓN es un mal adaptado a la tecnología para su uso en Android (o dispositivos móviles en general) debido a que el proceso de análisis de la sobrecarga que se requiere. Un RESTO de servicios es un liviano peso de la solución y eso es lo que sugiero. Android viene con un analizador SAX, y es bastante trivial para su uso. Si son absolutamente necesarios para manejar/analizar el JABÓN en un dispositivo móvil, entonces lo siento por usted, el mejor consejo que puedo ofrecer es simplemente no usar JABÓN.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X