我需要在 Windows 平台上使用 C++ 中的 XmlRpc。尽管我的朋友向我保证 XmlRpc 是一种“广泛可用的标准技术”,但可用的库并不多。事实上,我只找到一个库可以在 Windows 上执行此操作(另外一个库声称“您必须做很多工作才能在 Windows 上编译它”)。我找到的库是 Chris Morley 的“XmlRpc++”。但是,它不支持 SSL。

因此我的问题是:我应该使用什么库?

有帮助吗?

解决方案

我已经编写了自己的 C++ 库。它可以在 sourceforge 上找到:xmlrpcc4win

我写它而不是使用 Chris Morley 的原因是:

  • Windows“wininet.lib”库为您提供了处理 Http 请求的所有功能,因此我宁愿使用它。结果我只需要1700 LOC。
  • “wininet.lib”,因此我的实现支持 HTTPS
  • Chris Morley 对 STL 容器的使用效率相当低(Chris,如果你读过这篇文章,请给我发邮件)。

其他提示

在我编写自己的库之前,(见上文)这是我的答案:

目前, XmlRpc++ 库 作者 Chris Morley 是 Windows 上 C++ 的唯一公共域/LPGL XmlRpc 实现。

Linux 有几个 C++ 实现,其中任何一个都可以很容易地移植到 Windows,但事实似乎是还没有人这样做并将其公开可用。另外,正如 eczamy 所说,“XML-RPC 规范有些简单,实现您自己的 XML-RPC 客户端并不困难。”

尽管必须找到并修复相当多的错误,但我正在成功使用 Chris Morley 的库。这 帮助论坛 对于这个项目似乎有些活跃,但没有人修复这些错误并完成新版本。我一直在与 Chris Morley 通信,他模糊地希望发布一个新版本,他对这个 stackOverflow 问题做出了贡献(见下文/上文),他声称已经修复了大部分错误,但到目前为止他还没有发布了一个修复了许多错误的版本。最后一次发布是在 2003 年。

令我失望的是,一个被认为得到广泛支持(而且简单!)的协议在 Windows + C++ 上的支持却如此糟糕。请阅读此页的人拿起接力棒,例如:接管 XmlRpc++ 或正确移植 Linux 实现之一。

XML-RPC 有数十种实现 实施, ,有些是 C++ 语言,但大多数是其他语言。例如,除了XmlRpc++之外,还有 用于 C 和 C++ 的 XML-RPC. 。这里有一个 如何 关于如何使用 C 和 C++ 库的 XML-RPC。

XML-RPC 规范有些简单,实现您自己的 XML-RPC 客户端并不困难。更不用说,还可以采用 C 语言中的现有 XML-RPC 实现并将其引入您的 C++ 项目中。

XML-RPC 主页 还提供了很多有用的信息。

只是想注意几点:

  • XmlRpc++ 的 cvs 存储库中的源代码支持 OpenSSL(虽然我还没有尝试过,但它是由另一位开发人员贡献的)。

  • 大多数报告的错误都在 cvs 中修复;我目前无法访问Linux机器,所以我还没有发布正式版本。

  • XmlRpc++ 不是公共领域。它受版权保护并获得许可 (LGPL)。

谢谢,克里斯·莫利

我能够让 Tim 的 xml rpc 版本与 https 一起使用并使用基本的用户名/密码身份验证。

对于身份验证:

1)用户名和密码需要传递给InternetConnect(...)函数

2) http请求头“Authorization:在发送 HttpSendRequest(...) 命令之前需要添加基本的 base64encoded(user:pass)”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top