7

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

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

4

5 回答 5

9

我已经编写了自己的 C++ 库。可在 sourceforge 获得: xmlrpcc4win

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

  • Windows“wininet.lib”库为您提供了处理 Http 请求的所有功能,所以我宁愿使用它。结果,我只需要 1700 LOC。
  • “wininet.lib”,因此我的实现,支持 HTTPS
  • Chris Morley 对 STL 容器的使用非常低效(Chris,如果您阅读了这篇文章,请给我发邮件)。
于 2009-06-16T02:07:44.777 回答
4

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

目前, 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 实现之一。

于 2008-11-09T07:29:52.547 回答
1

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

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

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

于 2008-09-16T00:38:06.013 回答
1

只想注意几点:

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

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

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

谢谢,克里斯·莫利

于 2008-11-10T00:03:45.300 回答
1

我能够使用 https 和基本的用户名/密码身份验证获得 Tim 的 xml rpc 版本。

对于身份验证:

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

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

于 2013-02-06T20:40:53.353 回答