Utiliser XmlRpc en C ++ et Windows

Je dois utiliser XmlRpc en C ++ sur une plate-forme Windows. Malgré le fait que mes amis m’assurent que XmlRpc est une “technologie standard largement disponible”, il n’y a pas beaucoup de bibliothèques disponibles pour cela. En fait, je n’ai trouvé qu’une seule bibliothèque pour le faire sous Windows (et une autre qui dit “vous devrez faire beaucoup de travail pour que cela se comstack sous Windows). La bibliothèque que j’ai trouvée était” XmlRpc ++ “de Chris Morley. Cependant, il ne prend pas en charge SSL.

Ma question est donc la suivante: quelle bibliothèque dois-je utiliser?

J’ai écrit ma propre bibliothèque C ++. Il est disponible à sourceforge: xmlrpcc4win

La raison pour laquelle je l’ai écrite plutôt que d’utiliser Chris Morley était que:

  • La bibliothèque Windows “wininet.lib” vous donne toutes les fonctionnalités pour gérer les requêtes HTTP, donc je préfère les utiliser. En conséquence, je n’avais besoin que de 1700 points de base.
  • “wininet.lib”, et donc mon implémentation, supporte HTTPS
  • L’utilisation de conteneurs STL par Chris Morley était assez inefficace (Chris, écrivez-moi si vous lisez ceci).

Jusqu’à ce que j’écrive ma propre bibliothèque, (voir ci-dessus) voici ma réponse:

Actuellement, la bibliothèque XmlRpc ++ de Chris Morley est la seule implémentation du domaine public / LPGL XmlRpc pour C ++ sous Windows.

Il existe quelques implémentations C ++ pour Linux, qui peuvent être facilement scopes sur Windows, mais le fait semble être que personne ne l’a encore fait et l’a rendu public. En outre, comme le dit eczamy, “la spécification XML-RPC est assez simple et il ne serait pas difficile d’implémenter votre propre client XML-RPC”.

J’utilise la bibliothèque de Chris Morley avec succès, même si j’ai dû trouver et corriger un certain nombre de bogues. Le forum d’aide pour ce projet semble être quelque peu actif, mais personne n’a corrigé ces bogues et effectué une nouvelle version. J’ai été en correspondance avec Chris Morley et il a de vagues espoirs de faire une nouvelle version, et il a consortingbué à cette question de stackOverflow (voir ci-dessus / ci-dessus) et prétend avoir corrigé la plupart des bugs. fait une version qui corrige les nombreux bugs. La dernière version date de 2003.

Il est décevant qu’un protocole supposé largement supporté (et simple!) Ait un support si médiocre sous Windows + C ++. S’il vous plaît quelqu’un qui lit cette page peut prendre le relais et par exemple prendre en charge XmlRpc ++ ou porter correctement l’une des implémentations Linux.

Il existe des dizaines d’implémentations des implémentations XML-RPC, certaines en C ++, mais la plupart dans d’autres langages. Par exemple, outre XmlRpc ++, il existe aussi XML-RPC pour C et C ++ . Voici un HOWTO sur la manière d’utiliser la bibliothèque XML-RPC pour C et C ++.

La spécification XML-RPC est assez simple et il ne serait pas difficile d’implémenter votre propre client XML-RPC. Sans parler, il serait également possible de prendre une implémentation XML-RPC existante en C et de l’intégrer dans votre projet C ++.

La page d’accueil XML-RPC fournit également beaucoup d’informations utiles.

Je voulais juste noter quelques éléments:

  • La source dans le référentiel cvs pour XmlRpc ++ prend en charge OpenSSL (bien que je ne l’aie pas essayé, il a été fourni par un autre développeur).

  • La plupart des bogues signalés sont corrigés dans cvs; Je n’ai pas access à une machine Linux pour le moment, donc je n’ai pas publié de version officielle.

  • XmlRpc ++ n’est pas un domaine public. Il est sous copyright et sous licence (LGPL).

Merci, Chris Morley

J’ai pu obtenir la version de xml rpc de Tim fonctionnant avec https et avec une authentification de base par nom d’utilisateur / mot de passe.

Pour l’authentification:

1) le nom d’utilisateur et le mot de passe doivent être transmis à la fonction InternetConnect (…)

2) un en-tête de requête http de “Authorization: Basic base64encoded (user: pass)” doit être ajouté avant d’envoyer la commande HttpSendRequest (…).