在Linux下通过gSOAP调试WebService过程

     近期有一个项目要与第三方做系统对接,对方系统是采用WebService接口。因为我这里是采用Linux做为服务器,需在Linux下完成WebService接口的调用,通过万能的Google和百度和近四个小时的不休不眠,终于调通。

     在Linux调试WebService,我采用了第三方gSOAP工具,这是网上绝大部分人采用的方法。通过gSOAP调用WebService,在掌握相关操作步骤后,其实是很简单的,只是万事开关难,而且网上提供的资料不完整,导致花费了较多的时间,为了让新人能尽快掌握调用方法,少走弯路,特将本次的经验进行分享。

    为了保证一次调试成功,在不清楚流程的情况下,建议在测试时gsoap解压目录、安装目录、生成的调用文件名都按本测试程序要求做。

 

     一、准备工作

         1、Linux操作系统。我调试是在虚拟机下安装的Linux5.6 64位操作系统进行调试的。

         2、下载gSOAP工具包,我采用的gsoap2.8,可在我的资源中进行下载,下载地址http://download.csdn.net/detail/aryao/6444057

         3、本次调试测试程序的源码下载地址:http://download.csdn.net/detail/aryao/6444119,可以没有安装gsoap环境上进行编译和测试。

 

    二、安装gSOAP

        1、将下载的gsoap解压到linux目录,假定解压目录为:/root/gsoap-2.8/

        2、进入/root/gsoap-2.8/,依次执行以下三条命令即可完成gSOAP安装,假定gSOAP安装目录为:/usr/local/gsoap/

              ./configure --prefix=/usr/local/gsoap
              make
              make install

 

    三、根据gsoap工具,生成调用WebService的C++代码

       1、本次测试的WebService调用地址为:http://www.cs.fsu.edu/~engelen/calc.wsdl,按照以下命令,生成调用代码

            mkdir /callwebservice   

            cd /callwebservice

            /usr/local/gsoap/bin/wsdl2h -s -o calc.h http://www.cs.fsu.edu/~engelen/calc.wsdl        --calc.h为生成的调用头文件,可以按实际改名

            /usr/local/gsoap/bin/soapcpp2  -j -x calc.h        --calc.h文件必须与前面生成的一致

           注:以上操作选项是生成C++的调用方式,如果要生成纯C的调用文件,请查找wsdl2h、soapcpp2的使用说明

       2、执行完以上命令,便在/callwebservice目录下生成以下文件

            calc.h  calc.nsmap  soapcalcProxy.cpp  soapcalcProxy.h  soapcalcService.cpp  soapcalcService.h  soapC.cpp  soapH.h  soapStub.h

       3、将gsoap解压包中的stdsoap2.cpp、stdsoap2.h复制到/calwebservice目录,此步骤很重要,缺少会导致编译错误。

            cp /root/gsoap-2.8/gsoap/stdsoap2.cpp ./

            cp /root/gsoap-2.8/gsoap/stdsoap2.h ./

 

   四、编写测试程序

       1、建立Main.cpp调用文件,文件内容如下:

          

#include
#include "calc.nsmap"
#include "soapcalcProxy.h"

int main(void)
{

printf("webservice call test!\n");
calcProxy service;
double result;
if(service.pow(2, 10, result) == SOAP_OK)
{
 std::cout << "2^10 = " << result << std::endl;
}else{
 printf("call pow fail!\n");
}

if(service.add(100, 150, result) == SOAP_OK)
{
 std::cout << "100 + 150 = " << result << std::endl;
}else{
 printf("call add fail!\n");
}
return 0;
}
        2、建立Makefile编译文件,内容如下:

OBJS=soapC.o stdsoap2.o soapcalcProxy.o  Main.o
CC=g++

default:$(OBJS)
 $(CC) $(OBJS) -o wbstest
 
clean:
 rm $(OBJS) wbstest

       3、运行make进行编译,然后进行测试

            make

            ./wbstest

          

看完以上步骤,在linux下调用WebService是不是很简单,马上动手试试吧。

本次例程的源码下载地址:http://download.csdn.net/detail/aryao/6444119,经测试发现,通过wsdl2h、soapcpp2生成调用文件后,将程序拷贝到没有安装gSOAP环境的电脑上进行编译测试,一样通过。这情况说明安装gsoap工具的目的只是生成调用文件,生成后的调用文件完全不需要gsoap环境即可进行编译和使用。

你可能感兴趣的:(LINUX)