繁体   English   中英

如何在C ++中进行肥皂呼叫

[英]how to make a soap call in c++

我正在尝试找出独立于wsdl的c ++ soap客户端的最佳方法是什么。

我需要的是仅知道函数名称和参数列表以发送和发送它以及接收肥皂响应或类似的东西(我知道这并不简单)。

我的想法是执行以下操作: SOAP请求和响应使用libcurl-Chttp://www.cplusplus.com/forum/general/16225/ 从文件读取和归档

您能指出我执行此操作的最佳方法,还是最好的方法是使用gSoap之类的库并在c ++代码中执行gSoap生成的类的c ++方法?

谢谢

注意gSOAP是GPL许可的。 Axis2 / C ++的限制较少。

使用Axis2 / C ++,您可以从WSDL生成存根,并使用生成的类在代码中调用Web服务。

生成存根(是Java,但这是一次性的操作):

java org.apache.axis.wsdl.wsdl2ws.WSDL2Ws Calculator.wsdl -lc++ -sclient

然后使用:

#include "Calculator.h" 
#include <stdio.h> 
int main() 
{ 
  Calculator c; 
  int intOut; 
  c.add(20, 40, intOut); 
  printf("result is = %d\n", intOut); 
  return 0; 
}

在这里更多细节

取决于您要做什么。 如果您在某个地方需要单个请求,则卷曲(就像您在问题中链接的一样)是合适的。 C ++包含C,因此尽管确实更好,但您一次并不需要C ++接口。

但是,如果您需要对SOAP进行一些认真的工作,我绝对会建议使用gSOAP或类似的库。 使用XML非常乏味。 序列化/反序列化是处理它的最简单方法,而C ++是静态类型的,因此必须从架构那里生成序列化代码。 这就是gSOAP所做的。 因此,我认为没有比gSOAP更简单的方法。

即使您没有WSDL,我认为在WSDL中声明所需的方法并从中生成适当的序列化代码比手动处理XML更容易。 在更动态的语言中,可以在运行时生成序列化/反序列化,但是C ++不允许这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM