您的位置:首页 > 编程语言 > C语言/C++

标准C/C++程序通过gSOAP调用WebService

2011-11-22 15:50 281 查看
一、 环境准备

在本文中,所有程序均在Linux下开发完成,经测试能够正常运行。

在开发过程中,我们需要用到gSOAP,可以从以下网址下载获得:http://www.cs.fsu.edu/~engelen/soap.html

我下载的是gsoap_2.7.12.tar.gz

下载下来解压缩,按正常安装过程进行编译、安装。

# tar zxvf gsozp_2.7.12.tar.gz

# cd gsoap_2.7.12

# ./configure –-prefix=/usr/local/gSOAP(指定安装路径)

# make

# make install

二、 生成相关文件

1、通过WSDL文档,生成C/C++头文件

# /usr/local/gSOAP/bin/wsdl2h –c –o TestHeader.h http://192.168.0.151:8080/services/TestWS?wsdl

2、拷贝gSOAP源代码中import文件夹下的stlvector.h文件到TestHeader.h同一目录,如果在解析WSDL文档时使用了-s参数,即不使用STL,则不需要拷贝这一文件。

3、解析TestHeader.h文件,生成存根程序

# /usr/local/gSOAP/bin/soapcpp2 –c –C TestHeader.h

命令中参数-c代表生成标准C程序,若没有这个参数,则生成C++程序。

命令中参数-C代表仅生成客户端程序,若没有这个参数,则默认生成客户端和服务端程序。

三、 进行相关开发

1、新建工程

新建一个C的工程,并将刚刚生成的文件拷贝到工程中,设置工程属性,包含gSOAP源代码目录,链接属性处,需要包含文件libgsoap.a(使用C语言开发)或者libgsoap++.a(使用C++开发)。

2、代码开发

WebService的具体调用方式可以参见生成的soapStub.h文件。

Demo代码(调用WebService的addUser):

#include “soapH.h”

#include “TestHeaderHttpBinding.nsmap”

int main()

{

struct soap clientSOAP;

struct _ns1__addUser addUserMsg;

struct _ns1__addUserResponse addUserResponse;

soap_init(&clientSOAP);

addUserMsg.in0 = “test”;

addUserMsg.in1 = “test”;

addUserMsg.in2 = “test”;

if(soap_call___ns1__addUser(&clientSOAP, NULL, NULL, &addUserMsg, &addUserResponse) == SOAP_OK)

{

printf(“%s\n”, *addUserResponse.out);

}

else

{

printf(“Error\n”);

}

soap_destroy(&clientSOAP);

soap_end(&clientSOAP);

soap_done(&clientSOAP);

return 0;

}

正常的话,编译运行后能够在控制台看到WebService返回的处理结果。

在这段代码中,_ns1__addUser、_ns1__addUserResponse、soap_call___ns1__addUser都是在soapStub.h中获得,具体应用可能会根据不同的服务端生成不同的代码。

本文出自 “玄武·巴依” 博客,请务必保留此出处/article/4127781.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: