使用gSoap开发Web Service C/C++客户端[转]

 

一、开发环境准备

  1、从gSoap官方网站 http://gsoap2.sourceforge.net 下载软件

  2、根据文档安装配置gSoap()

二、如何开发WEB服务客户端

  1、基本流程

    (1)WEB服务提供者获取WEB ServiceWSDL文件;

    (2)使用gSoap工具wsdl2h,根据WSDL文件生成C/C++语法结构的头文件;

    (3)使用gSoap预编译器soapcpp2,根据.h头文件中定义的信息来生成客户端代码框架;

    (4)实现客户端例程;

    (5)GCC编译客户端,生成可执行代码。

  2、一个例子

    (1)WEB服务Hello.jws ( http://castor.ihep.ac.cn:8080/axis/Hello.jws ):

       public class Hello {

        public String hello(String name) {

               if(name==null)

                       name = "";

               return name +", welcome to the world of web service!";

         }

       }

    (2)获取WEB服务描述文件hello.wdsl

       http://castor.ihep.ac.cn:8080/axis/Hello.jws?wsdl

    (3)使用gSoap工具wsdl2h,根据WSDL文件生成C/C++语法结构的头文件hello.h

       wsdl2h -c hello.wsdl        

       -c 表示生成纯C头文件,不加-c生成C++头文件

    (4)使用gSoap预编译器soapcpp2,根据.h头文件中定义的信息来生成客户端代码框架

       soapcpp2 -c hello.h

       -c 表示生成纯C头代码,不加-c生成C++代码

    (5)实现客户端例程hello.c

       #include "soapH.h"

       #include "HelloSoapBinding.nsmap"

       int main()

       {

          struct soap soap;

          struct ns1__helloResponse ret;

          soap_init(&soap);

          if (soap_call_ns1__hello(&soap, NULL, NULL, "Aigui.LIU", &ret) == SOAP_OK)

               printf("%s/n", ret._helloReturn);

          else

             soap_print_fault(&soap, stderr);

          soap_destroy(&soap);

          soap_end(&soap);

          soap_done(&soap);

          return 0;

       }

    (6)GCC编译客户端,生成可执行代码hello

       $(CC) $(CFLAGS) -o hello hello.c soapC.c soapClient.c $(SOAPC)

       其中(Makefile中定义)

       GSOAP_PATH=/home/liuag/software/gsoap/gsoap-linux-2.6

       SOAPC=${GSOAP_PATH}/stdsoap2.c

       CC=gcc

       COFLAGS=-O2

       CWFLAGS=-Wall

       CIFLAGS=-I ${GSOAP_PATH}

       CMFLAGS=

       CFLAGS= $(CWFLAGS) $(COFLAGS) $(CIFLAGS) $(CMFLAGS)

    (7)运行结果

       $  ./hello

       $  Aigui.LIU, welcome to the world of web service!

三、参考文献

  1http://gsoap2.sourceforge.net

  2gSoap User Guide


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gsoap-2.8源码,基于服务器客户的实例,带自动生成服务客户代码的批处理程序,及如何使用。带自己学习参考的教程; 0.解压附件,soapInterface.bat所在路径不得含中文 空格 1.新建头文件 取soapInterface.bat文件的同名:soapInterface.h 文件内编写接口,具体说明看附件参考的教程 //gsoap ns service name: gservice //gsoap ns service style: rpc int ns__add(int num1, int num2, int* result ); int ns__sub(int num1, int num2, int* result ); int ns__mult( int num1, int num2, int *result); int ns__divid( int num1, int num2, int *result); 2.从附件内gsoap-2.8包中搜索复制stdsoap2.h,stdsoap2.cpp,soapcpp2.exe, 存放于soapInterface.bat同级目录 3.双击soapInterface.bat运行。生成gClientSoap,gServerSoap两个文件夹,分别复制到服务器工程与客户工程中使用 4.gClientSoap,gServerSoap两个文件夹内用到的文件功能说明,更多参考附件教程 1)soapC.cpp , soapH.h//soap的序列和反序列代码,它已经包含了soapStub.h 2)soapServer.c ppsoapServerLib.cpp //服务器代码(纯C代码是soapServer.c soapServerLib.c ),soapServerLib.cpp文件则只是简单地包含soapServer.cpp和soapC.cpp 3)soapClient.cpp soapClientLib.cpp//客户代码(纯C代码是soapClient.csoapClientLib.c ),soapClientLib.cpp文件则只是简单地包含soapClient.cpp和soapC.cpp 4) soapStub.h // soap的存根文件,定义了我们编写的头文件里对应的远程调用模型 5) add.nsmap //XML服务命名空间 6)服务器要载入的文件有:soapServer.cpp,soapC.cpp,stdsoap2.cpp; 要包含的文件有:gservice.nsmap,soapH.h; 客户要输入的文件有: soapClient.cpp,soapC.cpp,stdsoap2.cpp; 要包含的文件有:gservice.nsmap,soapH.h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值