Pregunta

Necesito usar XmlRpc en C++ en una plataforma Windows.A pesar de que mis amigos me aseguran que XmlRpc es una "tecnología estándar ampliamente disponible", no hay muchas bibliotecas disponibles para ello.De hecho, solo encontré una biblioteca para hacer esto en Windows (más otra que dice "tendrás que trabajar mucho para que esto se compile en Windows").La biblioteca que encontré fue "XmlRpc++" de Chris Morley.Sin embargo, no tiene soporte para SSL.

Por tanto mi pregunta es:¿Qué biblioteca debería usar?

¿Fue útil?

Solución

He escrito mi propia biblioteca C++.Está disponible en sourceforge:xmlrpcc4win

La razón por la que lo escribí en lugar de usar el de Chris Morley fue que:

  • La biblioteca "wininet.lib" de Windows le brinda toda la funcionalidad para manejar solicitudes Http, así que prefiero usarla.Como resultado, sólo necesitaba 1700 LOC.
  • "wininet.lib", y por lo tanto mi implementación, admite HTTPS
  • El uso de contenedores STL por parte de Chris Morley fue bastante ineficiente (Chris, envíame un correo electrónico si lees esto).

Otros consejos

Hasta que escribí mi propia biblioteca (ver arriba), aquí estaba mi respuesta:

Actualmente, el Biblioteca xmlRpc++ de Chris Morley es la única implementación XmlRpc de dominio público/LPGL para C++ en Windows.

Hay un par de implementaciones de C++ para Linux, cualquiera de las cuales presumiblemente podría migrarse fácilmente a Windows, pero el hecho parece ser que nadie lo ha hecho todavía ni lo ha puesto a disposición del público.Además, como dice eczamy, "La especificación XML-RPC es algo simple y no sería difícil implementar su propio cliente XML-RPC".

Estoy usando la biblioteca de Chris Morley con éxito, a pesar de haber tenido que encontrar y corregir varios errores.El Foro de ayuda Este proyecto parece estar algo activo, pero nadie ha solucionado estos errores ni ha realizado una nueva versión.He estado en correspondencia con Chris Morley y él tiene vagas esperanzas de hacer una nueva versión, y ha contribuido a esta pregunta de stackOverflow (ver más abajo/arriba) y afirma haber solucionado la mayoría de los errores, pero hasta ahora no lo ha hecho. hizo un lanzamiento que corrige muchos errores.El último lanzamiento fue en 2003.

Es decepcionante para mí que un protocolo supuestamente ampliamente compatible (¡y simple!) tenga un soporte tan pobre en Windows + C++.Por favor, ¿alguien que lea esta página puede tomar el testigo y, p.e.hacerse cargo de XmlRpc++ o portar adecuadamente una de las implementaciones de Linux.

Hay docenas de implementaciones de XML-RPC. implementaciones, algunos en C++, pero la mayoría en otros lenguajes.Por ejemplo, además de XmlRpc++ también existe XML-RPC para C y C++.Aquí hay un CÓMO sobre cómo se puede utilizar la biblioteca XML-RPC para C y C++.

La especificación XML-RPC es algo simple y no sería difícil implementar su propio cliente XML-RPC.Sin mencionar que también sería posible tomar una implementación XML-RPC existente en C e incorporarla a su proyecto C++.

El XML-RPC pagina de inicio También proporciona mucha información útil.

Sólo quería señalar un par de elementos:

  • La fuente en el repositorio cvs para XmlRpc++ tiene soporte para OpenSSL (aunque no lo he probado, fue aportado por otro desarrollador).

  • La mayoría de los errores reportados se corrigen en cvs;No tengo acceso a una máquina Linux en este momento, por lo que no he realizado un lanzamiento oficial.

  • XMLRpc++ no es de dominio público.Tiene derechos de autor y licencia (LGPL).

Gracias Chris Morley

Pude hacer que la versión de Tim de xml rpc funcionara con https y con autenticación básica de nombre de usuario/contraseña.

Para la autenticación:

1) el nombre de usuario y la contraseña deben pasarse a la función InternetConnect(...)

2) un encabezado de solicitud http de "Autorización:Es necesario agregar base64encoded(user:pass)" básico antes de enviar el comando HttpSendRequest(...).

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