如何在 C++ 中进行 SOAP 调用
how to make a soap call in c++
我试图找出独立于 wsdl 的 c++ soap 客户端的最佳方法是什么。
我需要的是只知道函数的名称以及发送和发送它并接收 soap 响应或类似内容的参数列表(我知道这没有它那么简单)。
我的想法是做这样的事情:SOAP 请求和响应 使用 libcurl 从文件读取和向文件读取 - C或http://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 = %dn", intOut);
return 0;
}
更多细节在这里
取决于你在做什么。如果你在某处需要单个请求,curl(就像你在问题中链接的那样)是合适的。C++包含C,所以这一次你真的不需要C++接口,尽管它会更好。
但是,如果您需要在 SOAP 上做一些严肃的工作,我绝对建议您使用 gSOAP 或类似的库。XML 使用起来相当乏味。序列化/反序列化是处理它的最简单方法,C++静态类型化,则必须从架构生成序列化代码。这正是gSOAP所做的。所以我认为没有比gSOAP更简单的方法了。
即使您没有 WSDL,我认为在 WSDL 中声明您需要的方法并从中生成适当的序列化代码比手动处理 XML 更容易。在更动态的语言中,序列化/反序列化可以在运行时生成,但C++不允许这样做。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- C# DLL 从C++应用程序调用 SOAP Web 服务
- 有没有办法用c ++ Gsoap客户端调用python soap spyne服务器?
- 如何在 C++ 中进行 SOAP 调用
- 通过FindItem SOAP调用获取RecurringMaster ID