用于C ++的Web服务客户端库

时间:2012-02-01 14:47:44

标签: c++ wsdl webservice-client gsoap

我想在Windows上为项目实现Web服务客户端。 我想获得网络服务信息,肥皂请求和肥皂响应。 我需要一个可以用于这些目的的C ++库(而不是wsdlpull)。

要求

  • 应该是C ++库
  • 可用于访问任何SOAP Web服务(因此我可以将URL,Web服务名称,Web服务方法和所有参数作为参数传递给函数调用)
  • 可以在Web服务中查询其WSDL并返回可用的方法名称,方法的参数及其数据类型
  • 简单的doucmentation

更具体一点:库应该有这样的简单调用来获取Web服务信息

invoker.getOperations(operations);

outputXml += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
outputXml += "<webService";
outputXml += " name=\"" + GetServiceName(&invoker) + "\"";
outputXml += ">\n";
outputXml += "\t<webMethods>\n";

感谢。

1 个答案:

答案 0 :(得分:7)

C / C ++ Web服务的行业标准是gsoap。 http://www.cs.fsu.edu/~engelen/soap.html

使用wsdl2h将XML Schema映射到C / C ++。它具有良好的文档和包中的大量样本。也可以找到文档online。您可以在许多操作系统(Linux,Windows等)中轻松移植代码

通过Web服务添加到号码的Simpe示例(调用代码)

#include "soapH.h"
#include "calc.nsmap"
main()
{
   struct soap *soap = soap_new();
   double result;
   if (soap_call_ns__add(soap, 1.0, 2.0, &result) == SOAP_OK)
      printf("The sum of 1.0 and 2.0 is %lg\n", result);
   else
      soap_print_fault(soap, stderr);
   soap_end(soap);
   soap_free(soap);
}

使用gsoap,您可以分两步完成工作

  1. 首先从WSDL
  2. 创建存根(如wsdl2java)
  3. 然后用对象调用存根
  4. 如果您想创建服务(充当服务器,而不仅仅是客户端代码)

    ,也是优秀的框架