在C ++和Windows中使用XmlRpc

时间:2008-09-16 00:12:14

标签: c++ windows ssl xml-rpc

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

因此我的问题是:我应该使用哪个图书馆?

5 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:4)

在我写自己的图书馆之前,(见上文)这是我的回答:

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

Linux有两种C ++实现,其中任何一种都可能很容易移植到Windows,但事实似乎是没有人这样做并且公开发布。另外,正如eczamy所说,“XML-RPC规范有点简单,实现自己的XML-RPC客户端并不困难。”

我成功地使用了Chris Morley的库,尽管必须找到并修复了很多错误。这个项目的Help Forum似乎有点活跃,但是没有人修复过这些错误并完成了新版本。我一直在与克里斯莫利通信,并且他希望做一个新的发布,并且他已经为这个stackOverflow问题做了贡献(见下文/上面)并且他声称修复了大部分错误,但到目前为止他还没有发布了修复许多错误的版本。最后一个版本发布于2003年。

令我失望的是,一个假定的广泛支持(和简单!)协议在Windows + C ++上的支持很差。请读此页面的人可以拿起接力棒,例如接管XmlRpc ++或正确移植其中一个Linux实现。

答案 2 :(得分:1)

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

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

XML-RPC home page也提供了许多有用的信息。

答案 3 :(得分:1)

只想注意几件事:

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

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

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

谢谢, 克里斯莫利

答案 4 :(得分:1)

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

用于身份验证:

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

2)http请求标头"授权:基本base64encoded(user:pass)"需要在发送HttpSendRequest(...)命令之前添加。