2012-02-01 140 views
4

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

要求

  • 应该是一个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"; 

感谢。

回答

7

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

提供使用wsdl2h将XML Schema映射到C/C++。它有很好的文档和很多样品。 Doc也可以找到online。在许多操作系统,您可以轻松地将您的代码(Linux操作系统,windows等)

Simpe例如通过Web服务增加数(调用代码)

#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. 然后调用存根与你的对象

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