【问题标题】:Web service client library for C++C++ 的 Web 服务客户端库
【发布时间】:2012-02-01 14:47:43
【问题描述】:

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

要求

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

更具体地说:图书馆应该有这样的简单调用来获取网络服务信息

invoker.getOperations(operations);

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

谢谢。

【问题讨论】:

    标签: c++ wsdl webservice-client gsoap


    【解决方案1】:

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

    使用 wsdl2h 将 XML Schema 映射到 C/C++。它有很好的文档和包中的大量示例。文档也可以在online 找到。您可以轻松地将代码移植到许多操作系统(linux、windows 等)中

    通过网络服务添加数字的简单示例(调用代码)

    #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 创建存根(如 wsdl2java)
    2. 然后你用你的对象调用存根

    如果您想创建服务(充当服务器,而不仅仅是客户端代码),也是出色的框架

    【讨论】:

      猜你喜欢
      • 2014-09-04
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2010-11-09
      相关资源
      最近更新 更多