我需要在 Windows 平台上使用 C++ 中的 XmlRpc。尽管我的朋友们向我保证 XmlRpc 是一种“广泛使用的标准技术”,但可用的库并不多。事实上,我只找到了一个在 Windows 上执行此操作的库(加上另一个声称“您必须做很多工作才能在 Windows 上编译它)。我找到的库是 Chris Morley 的“XmlRpc++”。但是,它不支持 SSL。
因此,我的问题是:我应该使用什么库?
我已经编写了自己的 C++ 库。可在 sourceforge 获得: xmlrpcc4win
我写它而不是使用 Chris Morley 的原因是:
在我编写自己的库之前,(见上文)这是我的答案:
目前, Chris Morley 的 XmlRpc ++ 库是 Windows 上 C++ 的唯一公共域/LPGL XmlRpc 实现。
Linux 有几个 C++ 实现,其中任何一个都可以很容易地移植到 Windows,但事实似乎是还没有人这样做并使其公开可用。此外,正如 eczamy 所说,“XML-RPC 规范有些简单,实现您自己的 XML-RPC 客户端并不难。”
我成功地使用了 Chris Morley 的库,尽管必须找到并修复相当多的错误。该项目的帮助论坛似乎有些活跃,但没有人修复这些错误并发布新版本。我一直在与 Chris Morley 通信,他模糊地希望发布一个新版本,他为这个 stackOverflow 问题做出了贡献(见下文/上文),他声称已经修复了大部分错误,但到目前为止他还没有发布了一个修复了许多错误的版本。最后一次发布是在 2003 年。
令我失望的是,一个被广泛支持(而且很简单!)的协议在 Windows + C++ 上的支持如此糟糕。请阅读此页面的人拿起接力棒,例如接管 XmlRpc++ 或正确移植 Linux 实现之一。
XML-RPC implementations的实现有几十种,其中一些使用 C++,但大多数使用其他语言。例如,除了 XmlRpc++ 之外,还有用于 C 和 C++ 的 XML-RPC。这是关于如何使用 C 和 C++ 库的 XML-RPC的HOWTO 。
XML-RPC 规范有些简单,实现您自己的 XML-RPC 客户端并不困难。更不用说,还可以将现有的 C 语言 XML-RPC 实现引入您的 C++ 项目。
XML-RPC主页也提供了很多有用的信息。
只想注意几点:
XmlRpc++ 的 cvs 存储库中的源代码支持 OpenSSL(虽然我没有尝试过,它是由另一个开发人员提供的)。
大多数报告的错误已在 cvs 中修复;我目前无法访问 linux 机器,所以我还没有正式发布。
XmlRpc++不是公共领域。它受版权保护和许可 (LGPL)。
谢谢,克里斯·莫利
我能够使用 https 和基本的用户名/密码身份验证获得 Tim 的 xml rpc 版本。
对于身份验证:
1) 用户名和密码需要传递给 InternetConnect(...) 函数
2)发送HttpSendRequest(...)命令前需要添加“Authorization: Basic base64encoded(user:pass)”的http请求头。