在C ++和Windows中使用XmlRpc

时间:2020-03-05 18:54:50  来源:igfitidea点击:

我需要在Windows平台上的C ++中使用XmlRpc。尽管我的朋友向我保证XmlRpc是一种"广泛可用的标准技术",但并没有很多可用的库。实际上,我只找到了一个在Windows上执行此操作的库(还有另一个声称"我们必须做很多工作才能在Windows上编译该库")。我找到的库是克里斯莫利的" XmlRpc ++"。但是,它不支持SSL。

因此,我的问题是:我应该使用哪个库?

解决方案

回答

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

XML-RPC规范有些简单,实现我们自己的XML-RPC客户端并不困难。更不用说,也可以在C中使用现有的XML-RPC实现并将其引入C ++项目。

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

回答

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

当前,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实现。

回答

只想注意几个项目:

  • XmlRpc ++的cvs存储库中的源代码支持OpenSSL(尽管我没有尝试过,但它是由另一个开发人员提供的)。
  • 大多数已报告的错误已在cvs中修复。我目前无法使用linux机器,因此我尚未进行正式发布。
  • XmlRpc ++不是公共领域。它已获得版权和许可(LGPL)。

谢谢,
克里斯·莫利

回答

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

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

  • Windows" wininet.lib"库为我们提供了处理Http请求的所有功能,所以我宁愿使用它。结果,我只需要1700 LOC。
  • " wininet.lib"(因此是我的实现)支持HTTPS
  • 克里斯·莫利(Chris Morley)使用STL容器的效率很低(克里斯,如果我们读过这本书,请给我发邮件)。