Использование XmlRpc в C ++ и Windows - PullRequest
7 голосов
/ 16 сентября 2008

Мне нужно использовать XmlRpc в C ++ на платформе Windows. Несмотря на то, что мои друзья уверяют меня, что XmlRpc является «широко доступной стандартной технологией», для него не так много доступных библиотек. На самом деле я нашел только одну библиотеку, которая делает это в Windows (плюс еще одна, которая утверждает, что «вам придется проделать большую работу, чтобы компилировать ее в Windows). Библиотека, которую я нашел, была« XmlRpc ++ »Криса Морли. Тем не менее, он не поддерживает SSL.

Поэтому мой вопрос: какую библиотеку мне использовать?

Ответы [ 5 ]

9 голосов
/ 16 июня 2009

Я написал свою собственную библиотеку C ++. Это доступно в sourceforge: xmlrpcc4win

Причина, по которой я написал это вместо использования Криса Морли, заключалась в том, что:

  • Библиотека Windows "wininet.lib" предоставляет вам все функциональные возможности для обработки запросов Http, поэтому я бы предпочел использовать это. В результате мне потребовалось всего 1700 LOC.
  • "wininet.lib", и, следовательно, моя реализация поддерживает HTTPS
  • Использование Крисом Морли контейнеров STL было совершенно неэффективным (Крис, напишите мне, если вы прочитаете это).
4 голосов
/ 09 ноября 2008

Пока я не написал свою собственную библиотеку, (см. Выше) вот мой ответ:

В настоящее время библиотека *1003* *1003*, созданная Крисом Морли, является единственной общедоступной реализацией XmlRpc для LPGL для C ++ в Windows.

Существует несколько реализаций C ++ для Linux, каждая из которых может быть легко перенесена в Windows, но, похоже, факт заключается в том, что никто еще не сделал этого и не сделал его общедоступным. Кроме того, как говорит eczamy: «Спецификация XML-RPC несколько проста, и не составит труда реализовать свой собственный клиент XML-RPC».

Я успешно использую библиотеку Криса Морли, несмотря на то, что мне пришлось находить и исправлять довольно много ошибок. Справочный форум для этого проекта выглядит несколько активным, но никто не исправил эти ошибки и не выпустил новую версию. Я переписывался с Крисом Морли, и у него есть смутные надежды сделать новый выпуск, и он внес свой вклад в этот вопрос stackOverflow (см. Ниже / выше), и он утверждает, что исправил большинство ошибок, но пока он не сделал релиз, который исправляет множество ошибок. Последний выпуск был в 2003 году.

Меня разочаровывает, что предполагаемый широко поддерживаемый (и простой!) Протокол имеет такую ​​плохую поддержку в Windows + C ++. Пожалуйста, кто-нибудь, читающий эту страницу, может поднять эстафету и, например, принять XmlRpc ++ или правильно портировать одну из реализаций Linux.

1 голос
/ 07 февраля 2013

Мне удалось получить версию xml rpc Тима, работающую с https и с базовой аутентификацией по имени пользователя и паролю.

Для аутентификации:

1) имя пользователя и пароль необходимо передать в функцию InternetConnect (...)

2) перед отправкой команды HttpSendRequest (...) необходимо добавить заголовок запроса http «Авторизация: базовый base64encoded (user: pass)».

1 голос
/ 10 ноября 2008

Просто хотел отметить пару вещей:

  • Источник в репозитории cvs для XmlRpc ++ имеет поддержку OpenSSL (хотя я не пробовал, он предоставлен другим разработчиком).

  • Большинство зарегистрированных ошибок исправлено в cvs; У меня нет доступа к машине с Linux, поэтому я не выпустил официальный релиз.

  • XmlRpc ++ не является общественным достоянием. Он защищен авторским правом и лицензирован (LGPL).

Спасибо, Крис Морли

1 голос
/ 16 сентября 2008

Существуют десятки реализаций XML-RPC , , некоторые на C ++, но большинство на других языках. Например, помимо XmlRpc ++ есть также XML-RPC для C и C ++ . Вот HOWTO о том, как можно использовать XML-RPC для библиотек C и C ++.

Спецификация XML-RPC несколько проста, и не составит труда реализовать собственный клиент XML-RPC. Не говоря уже о том, что было бы также возможно взять существующую реализацию XML-RPC в C и внедрить в ваш проект C ++.

Домашняя страница XML-RPC также содержит много полезной информации.

...