Question

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 (plus une autre qui dit "vous devrez faire beaucoup de travail pour que cela soit compilé sous Windows). La bibliothèque que j'ai trouvée était "XmlRpc ++" de Chris Morley. Cependant, SSL n’est pas supporté.

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

Était-ce utile?

La solution

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

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

  • Les fenêtres " wininet.lib " La bibliothèque vous donne toutes les fonctionnalités pour gérer les requêtes Http, je préfère donc l’utiliser. En conséquence, je n’avais besoin que de 1700 LOC.
  • "wininet.lib", et donc mon implémentation, prend en charge HTTPS
  • L'utilisation par Chris Morley des conteneurs STL était assez inefficace (Chris, écrivez-moi si vous lisez ceci).

Autres conseils

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

Actuellement, la bibliothèque XmlRpc ++ par Chris Morley est la seule implémentation de domaine public / LPGL XmlRpc pour C ++ sur Les fenêtres.

Il existe plusieurs implémentations C ++ pour Linux, l'une ou l'autre pouvant être facilement transférée sous Windows, mais le fait semble être que personne ne l'a encore fait et mis à la disposition du public. En outre, comme le dit eczamy, "La spécification XML-RPC est assez simple et il ne serait pas difficile de mettre en œuvre votre propre client XML-RPC."

J'utilise avec succès la bibliothèque de Chris Morley, malgré le fait que j'ai dû trouver et corriger un grand nombre de bugs. Le le forum d'aide semble être un peu actif, mais personne n’a corrigé ces bugs et fait une nouvelle version. J'ai été en correspondance avec Chris Morley et il a de vagues espoirs de faire une nouvelle version. Il a contribué à cette question de stackOverflow (voir ci-dessous / ci-dessus) et il prétend avoir corrigé la plupart des bugs, mais il ne l'a pas encore fait. fait une version qui corrige les nombreux bugs. La dernière version date de 2003.

Il est décevant pour moi qu'un protocole supposé largement supporté (et simple!) supporte si mal le support sous Windows + C ++. S'il vous plaît quelqu'un qui lit cette page peut-il prendre le relais, par exemple reprendre XmlRpc ++ ou porter correctement une des implémentations Linux.

Il existe des dizaines d'implémentations de implémentations de XML-RPC, certaines en C ++. , mais la plupart dans d’autres langues. Par exemple, outre XmlRpc ++, il existe également un XML-RPC pour C et C ++ . Voici un HOWTO sur la manière dont XML-RPC pour les bibliothèques C et C ++ peuvent être utilisés.

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

La page d'accueil de XML-RPC fournit également de nombreuses 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ée, elle a été fournie par un autre développeur).

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

  • XmlRpc ++ n'est pas du domaine public. Il est protégé par le droit d'auteur et sous licence (LGPL).

Merci, Chris Morley

J'ai réussi à obtenir la version de xml rpc de Tim fonctionnant avec https et avec une authentification de base 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 " Autorisation: base64 codé (utilisateur: pass) " doit être ajouté avant d’envoyer la commande HttpSendRequest (...).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top