Pregunta

Intenté usar gSOAP para acceder a un servicio web (p. ej.usar el WSDL suministrado para generar códigos auxiliares C y luego usarlos en una aplicación).Sin embargo, descubrí que los archivos .c y objetos generados son bastante grandes (varios megabytes), lo cual es un problema en el entorno integrado donde trabajo.

¿Conoce alguna biblioteca SOAP más simple o tengo que recurrir a generadores y analizadores XML genéricos como ezXML?

¿Fue útil?

Solución

Hace poco se veía en esta cuestión también, y la mejor opción que encontré fue gSOAP, que es muy maduro y bien probado. Sin embargo, decidí ir a una ruta no jabón, que era una opción ya que estoy en ambos lados de cliente y servidor. Antes de utilizar gSOAP, asegúrese de que se puede vivir con su licencia, puede ser obligado a liberar su código o pagar ellos, dependiendo de cómo lo usa.

Otra opción es Apache Axis2 / C , aunque no tengo experiencia con ella ( yo supongo que tiene una huella de tamaño similar a gSOAP). Su API del cliente es aquí . Un tutorial sobre la API de cliente es aquí .

Si usted decide ir a la ruta XML analizado, que podría estar interesado en este SO cuestión (ver las respuestas).

También podría Pedido impulso :: espíritu de la ruta analizada. Tiene la capacidad de hacer pequeño, rápido, especializado (y en general) analizadores, si se siente cómodo con C ++ (que pueden ser escritos a ser de reentrada, por lo que una llamada a través de un objeto estático con un extern "C" de la interfaz es kosher ). Puedo dar fe de que en el sentido general (no específica a XML). empinada curva de aprendizaje, pero gran recompensa.

Otros consejos

¿Es este un servicio web que está creando?Si es así, considere usar DESCANSAR en lugar de jabón.REST es mucho más simple y puede utilizar controladores HTTP existentes, probados y que ahora funcionan en lugar de pasar por una enorme capa de traducción HTTP - XML ​​- SOAP.

Si está consumiendo el servicio web de otra persona, examine el esquema SOAP y/o los ejemplos de respuestas.No puedo creer que esté defendiendo esto, pero si el esquema no es extensible o recursivo, es mejor que utilice un analizador LALR simple o incluso una coincidencia de cadenas en las respuestas HTTP sin procesar en lugar de intentar analizar SOAP o XML.Esto es mucho más sencillo de implementar en C integrado.

Por lo general, caen de nuevo a crear el XML directamente (en su mayoría por la concatenación de cadenas), donde hay una biblioteca buen jabón se puede utilizar.

Otra solución podría ser que cambie a JSON, que (por lo general) tiene sobrecarga más pequeña y tamaños de petición / respuesta por lo que podría ser mejor en los programas integrados. Si sólo dispone de un servicio web de SOAP disponible se puede utilizar un script de proxy en el servidor que se traduce solicitudes JSON a solicitudes y respuestas SOAP SOAP para respuestas de JSON.

¿Has mirado en Apache CXF . Tiene varias características código Gen

* Java to WSDL
* WSDL to Java
* XSD to WSDL
* WSDL to XML
* WSDL to SOAP
* WSDL to service

Una guía más útil para construir un consumidor es aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top