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





Существуют десятки реализаций XML-RPC реализации, некоторые на C++, но большинство на других языках. Например, помимо XmlRpC++ существует еще XML-RPC для C и C++. Вот КАК о том, как можно использовать библиотеки XML-RPC для C и C++.
Спецификация XML-RPC довольно проста, и реализовать собственный клиент XML-RPC не составит труда. Не говоря уже о том, что можно было бы также взять существующую реализацию XML-RPC на C и перенести в свой проект на C++.
XML-RPC домашняя страница также предоставляет много полезной информации.
Пока я не написал свою собственную библиотеку (см. Выше), вот мой ответ:
В настоящее время Библиотека XmlRpC++ Криса Морли является единственной реализацией XmlRpc открытого домена / LPGL для C++ в Windows.
Существует несколько реализаций C++ для Linux, любую из которых предположительно можно легко перенести на Windows, но, похоже, никто еще не сделал этого и не сделал его общедоступным. Кроме того, как говорит Экзэми: «Спецификация XML-RPC довольно проста, и реализовать собственный клиент XML-RPC не составит труда».
Я успешно использую библиотеку Криса Морли, несмотря на то, что мне пришлось найти и исправить довольно много ошибок. Справочный форум для этого проекта кажется активным, но никто не исправил эти ошибки и не выпустил новый выпуск. Я переписывался с Крисом Морли, и у него были смутные надежды на выпуск нового релиза, и он внес свой вклад в этот вопрос о stackOverflow (см. Ниже / выше), и он утверждает, что исправил большинство ошибок, но пока он не сделал релиз, в котором исправлено множество ошибок. Последний выпуск был в 2003 году.
Меня разочаровывает то, что предполагаемый широко поддерживаемый (и простой!) Протокол имеет такую плохую поддержку в Windows + C++. Кто-нибудь, читающий эту страницу, может принять эстафету и, например, взять на себя XmlRpC++ или правильно портировать одну из реализаций Linux.
Сразу хотел отметить пару моментов:
Исходный код в репозитории cvs для XmlRpC++ поддерживает OpenSSL (хотя я его не пробовал, он был предоставлен другим разработчиком).
Большинство обнаруженных ошибок исправлено в cvs; На данный момент у меня нет доступа к Linux-машине, поэтому я не выпускал официального релиза.
XmlRpC++ не является общественным достоянием. Он защищен авторским правом и лицензирован (LGPL).
Спасибо, Крис Морли
Я написал свою собственную библиотеку C++. Он доступен на sourceforge: xmlrpcc4win
Причина, по которой я написал его, а не использовал Криса Морли, заключалась в следующем:
Спасибо за это, я попробую. Я должен признать, что меня довольно пугает эта часть файла TimXmlRpc.cpp: #define not! #define или || #define и &&
Небольшое обновление, я с большим успехом использую эту библиотеку, и ее было очень легко реализовать. Настоятельно рекомендуется всем, кому нужен XmlRpc в Windows.
@TimCooper Поддерживает ли он какой-либо способ делать несинхронизированные вызовы xmlrpc?
Я только что попробовал «XmlRpc C++ для Windows» Тима с Infusionsoft, и, черт возьми, он работает! Однако следует обратить пристальное внимание на то, как Infusionsoft размещает структуры внутри массивов.
Спасибо, что поделились своей библиотекой! Однако, похоже, он не поддерживает Unicode. Кодировка не указана в теге XML (следовательно, по умолчанию используется UTF8). Затем клиентская программа должна преобразовать строки в / из UTF8 перед передачей в библиотеку. Не очень удобно. Также не компилируется Release-версия проекта. Думаю, это не большая проблема, поскольку мы используем только исходный код (а не проект). Также существуют вызовы strcpy / sprintf, которые могут вызвать переполнение буфера.
Мне удалось получить версию xml rpc Тима, работающую с https и с базовой аутентификацией по имени пользователя и паролю.
Для аутентификации:
1) имя пользователя и пароль необходимо передать в функцию InternetConnect (...)
2) перед отправкой команды HttpSendRequest (...) необходимо добавить заголовок HTTP-запроса «Авторизация: базовая кодировка base64 (пользователь: пароль)».
вы можете прислать мне ваш измененный исходный код? Я просмотрю, а затем выложу в версию sourceforge. Вы можете связаться со мной по адресу [email protected]
Библиотека «XML-RPC для C и C++» не работает в Windows - я цитирую: «... но факт в том, что она, вероятно, не будет работать прямо из коробки в вашей системе Windows». Это означает, что есть только одна библиотека для C++, которая работает в Windows, то есть библиотека Криса Морли, и у нее нет поддержки SSL.