Tengo muchos problemas para encontrar buena información sobre cómo llamar a un servicio web SOAP / WSDL estándar con Android. Todo lo que he podido encontrar son documentos muy complicados y referencias a "kSoap2" y luego un poco sobre cómo analizarlo todo manualmente con SAX . Bien, está bien, pero es 2008, así que pensé que debería haber una buena biblioteca para llamar a los servicios web estándar.
El servicio web es básicamente uno creado en NetBeans . Me gustaría tener soporte IDE para generar las clases de fontanería. Solo necesito la forma más fácil / elegante de contactar un servicio web basado en WSDL desde un teléfono con Android.
Respuestas:
Android no proporciona ningún tipo de biblioteca SOAP. Puede escribir el suyo o usar algo como kSOAP 2 . Como observa, otros han podido compilar y usar kSOAP2 en sus propios proyectos, pero no he tenido que hacerlo.
Google ha mostrado, hasta la fecha, poco interés en agregar una biblioteca SOAP a Android. Sospecho de esto es que prefieren apoyar las tendencias actuales de los servicios web hacia los servicios basados en REST, y usar JSON como formato de encapsulación de datos. O, usando XMPP para mensajería. Pero eso es solo una conjetura.
Los servicios web basados en XML son una tarea poco trivial en Android en este momento. Sin conocer NetBeans, no puedo hablar con las herramientas disponibles allí, pero estoy de acuerdo en que debería estar disponible una mejor biblioteca. Es posible que XmlPullParser lo salve de usar SAX, pero no sé mucho sobre eso.
fuente
org.apache.http.impl.client.DefaultHttpClient
viene en el SDK de Android por defecto. Eso lo conectará a WSDL.fuente
Es cierto que debido a su sobrecarga, SOAP no es la mejor opción para el intercambio de datos con dispositivos móviles. Sin embargo, puede encontrarse en una situación en la que no controla el formato de salida del servidor.
Entonces, si tiene que seguir con SOAP, hay una biblioteca kSOAP2 parcheada para Android aquí:
http://code.google.com/p/ksoap2-android/
fuente
Para llamar a un servicio web desde un dispositivo móvil (especialmente en un teléfono Android), he usado una forma muy simple de hacerlo. No he utilizado ninguna API de cliente de servicio web para intentar llamar al servicio web. Mi enfoque es el siguiente para hacer una llamada.
HttpURLConnection
.getResonseCode
).ErrorInput
secuencia en el mismo objeto HTTP y reciba el error, si corresponde.He implementado este procedimiento para el teléfono Android y se está ejecutando con éxito. Puedo analizar la respuesta incluso si es más de 700 KB.
fuente
SOAP es una tecnología inadecuada para usar en Android (o dispositivos móviles en general) debido a la sobrecarga de procesamiento / análisis que se requiere. Un servicio REST es una solución más ligera y eso es lo que sugeriría. Android viene con un analizador SAX, y es bastante trivial de usar. Si está absolutamente obligado a manejar / analizar SOAP en un dispositivo móvil, lo siento, el mejor consejo que puedo ofrecer es simplemente no usar SOAP.
fuente
Hace aproximadamente un año, estaba leyendo este hilo tratando de descubrir cómo hacer llamadas SOAP en Android: las sugerencias para construir el mío usando HttpClient me hicieron construir mi propia biblioteca SOAP para Android:
IceSoap
Básicamente, le permite crear sobres para enviar a través de una API Java simple, luego los analiza automáticamente en objetos que usted define a través de XPath ... por ejemplo:
Se convierte en:
Lo estaba usando para mi propio proyecto, pero pensé que podría ayudar a otras personas, así que pasé un tiempo separándolo y documentándolo. Realmente me encantaría si algunas de sus pobres almas que se topan con este hilo mientras buscan en Google "SOAP Android" podrían intentarlo y obtener algún beneficio.
fuente
fuente
Tuve mi cita con KSOAP; Elegí un enfoque más simple.
Dado un archivo WSDL, cree plantillas de solicitud SOAP para cada solicitud (por ejemplo, usando la interfaz de usuario SOAP) y luego sustituya los valores que se pasarán en el código. PUBLICA estos datos en el punto final del servicio utilizando la instancia DefaultHttpClient y obtén la secuencia de respuesta. Analice el flujo de respuesta utilizando un analizador XML Pull.
fuente
Puedes echar un vistazo a WSClient ++
fuente
He creado un nuevo cliente SOAP para la plataforma Android. Está utilizando una interfaz generada por JAX-WS, pero hasta ahora es solo una prueba de concepto.
Si está interesado, pruebe el ejemplo y / o mire la fuente en AndroidSOAP .
fuente
Si puedes, ve por JSON. Android viene con el paquete completo org.json
fuente
Llame a los métodos ksoap2 . Funciona muy bien
Configure los detalles, como
y luego para obtener el resultado hacer
fuente
Espero que sea útil llamar a un servicio web desde Android .
fuente
Hace unos meses estaba trabajando con el servicio web jax-ws en la aplicación j2ee. Allí estábamos usando CXF wsdl2java para generar el código auxiliar del cliente WS a partir del archivo WSDL y con esos códigos auxiliares del cliente consumimos los servicios web. Hace unas semanas, cuando intentaba consumir el servicio web de la misma manera en la plataforma de Android, no pude, porque el jar de Android no tiene todas las clases de soporte "jax-ws". Esa vez no encontré ninguna herramienta de este tipo (si no fallé en google de manera eficiente) para cumplir con mi requisito:
Entonces, desarrollé mi propia herramienta de generación de clientes SOAP para Android . Donde tienes que seguir estos pasos:
p.ej:
fuente
Estoy seguro de que podría hacer un pequeño cliente SOAP con Axis . Instrucciones de instalación del eje .
fuente
Creo que Call SOAP Web Service desde la aplicación de Android te ayudará mucho.
fuente
Siga estos pasos por el método SOAP
Desde el archivo WSDL,
crear plantillas de solicitud SOAP para cada solicitud.
Luego sustituya los valores que se pasarán en el código.
PUBLICA estos datos en el punto final del servicio utilizando la instancia DefaultHttpClient.
Obtenga el flujo de respuesta y finalmente
Analice el flujo de respuesta utilizando un analizador XML Pull.
fuente
Si puede usar JSON, hay un documento técnico, un video y el código de muestra en Desarrollo de servicios de aplicaciones con servidores PHP y clientes de teléfonos Android .
fuente
Para mí, la forma más fácil es usar una buena herramienta para generar todas las clases requeridas. Personalmente uso este sitio:
http://easywsdl.com/
Admite servicios web bastante complejos y utiliza ksoap2.
fuente
Sugeriría probar una herramienta muy útil que me ayudó mucho. Los muchachos que se encargaron de ese proyecto también fueron muy útiles. www.wsdl2code.com/
fuente
Si tiene problemas para llamar al servicio web en Android, puede usar el código siguiente para llamar al servicio web y obtener una respuesta. Asegúrese de que su servicio web devuelva la respuesta en formato de tabla de datos. Este código lo ayudará si utiliza datos de la base de datos de SQL Server . Si estás usando MYSQL necesita cambiar una cosa, simplemente reemplace la palabra NewDataSet de la oración
obj2=(SoapObject) obj1.getProperty("NewDataSet");
por DocumentElementSi tiene algún problema con respecto a esto, puede escribirme.
fuente
Descargue y agregue el archivo de biblioteca SOAP con su proyecto Nombre de archivo: ksoap2-android-assembly-3.4.0-jar-with-dependencies
Limpie la aplicación y luego inicie el programa.
Aquí está el código para llamar al servicio SOAP
Los resultados pueden ser JSONObject o JSONArray or String
Para su mejor referencia, https://trinitytuts.com/load-data-from-soap-web-service-in-android-application/
Gracias.
fuente
Este es un ejemplo práctico de consumir servicios web SOAP en Android.
** Nota :: *** NO OLVIDES AGREGAR ksoap2.jar en tu proyecto y también agrega el permiso de INTERNET en el archivo AndroidManifest *
fuente
Puede realizar una llamada de jabón como publicación sobre http con ciertos encabezados. Resolví esta pregunta sin bibliotecas adicionales como ksoap2. Aquí hay un código en vivo para obtener órdenes del servicio de jabones
fuente
Para llamar a un servicio web SOAP desde Android, intente utilizar este cliente
NO OLVIDES AGREGAR ksoap2-android.jar en tu ruta de compilación de Java
fuente
Agregar jabón Libaray (
ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar
):Cadena estática pública Fn_Confirm_CollectMoney_Approval (
fuente