设为首页 加入收藏

TOP

C/C++程序通过gSOAP调用WebService
2014-11-23 17:56:44 】 浏览:8828
Tags:C/C 程序 通过 gSOAP 调用 WebService

  一、环境准备


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


  在开发过程中,我们需要用到gSOAP,可以从以下网址下载获得:[url]http://www.cs.fsu.edu/~engelen/soap.html[/url]我下载的是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 [url]http://192.168.0.151:8080/services/TestWS wsdl[/url]


  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中获得,具体应用可能会根据不同的服务端生成不同的代码。


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇计算机二级辅导:VC文件扩展名解读.. 下一篇做出windows那种无闪烁画图

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目