VisualStudio环境下GSOAP开发指南

来源:互联网 发布:绝对值的算法 初一 编辑:程序博客网 时间:2024/06/07 00:49
  • 前言

 在网上查了webservice的例子,但是感觉乱七八糟,不够简洁明了。    

一般情况下VC书写Webservice客户端,可以使用微软提供的SOAP Toolkit 3.0 SDK,这样比较方便快捷,但是用过的人都知道,这样的代码部署会有很大的问题,必须要求部署机器安装该SDK。

GSOAP是一个开源项目,可以解决这个部署的问题,但是由于他只是一个开源的东西,要与vc无缝整合并不是一个容易的事情。

http://www.cs.fsu.edu/~engelen/soapdoc2.html是GSOAP的指南,按照该指南一步一步做,其实也不会成功。

  • 测试环境

IDE版本:

VS2008(其他版本也适用)

GSOAP版本:

gsoap2.7.12(其他版本也适用)

  • 向导

1 . 环境假定:

    1)已有一个webservice: http://localhost:16041/WebService1.asmx, 该web服务暴露出方法

      [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

     2)假定已用向导生成win32控制台工程 cln,目录 c:/code/cln

     3) 假定gsoap源目录 c:/gsoap

 2.准备:

     1)建立子目录c:/code/cln/gsoap

     2) 复制wsdl2h.exe,soapcpp2.exe到c:/code/cln/gsoap,该2文件在c:/gsoap/bin/win32下可找到

     3)复制stdsoap2.h,stdsoap2.cpp到c:/code/cln/gsoap,该2文件在c:/gsoap根目录下

 3.wsdl2h编译.h

      命令行进入c:/code/cln/gsoap

              生成C++代码:

                 $ wsdl2h -o test.h http://localhost:16041/WebService1.asmx?wsdl     

             生成C++代码,不是用STL

                  $ wsdl2h -s -o test.h http://localhost:16041/WebService1.asmx?wsdl    

               生成纯C代码

                    $ wsdl2h -c  -o test.h http://localhost:16041/WebService1.asmx?wsdl

   4.soapcpp2编译.cpp

      soapcpp2 test.h -I D:\gsoap-2.7\gsoap\import//一定要注意指定导入库 否则提示缺少stlvector.h文件

 5.cln工程整合编译

    将soapC.cpp,soapClient.cpp,stdsoap2.cpp包含入工程,右键选择这3个cpp文件,去除预编译头(勿忘!!!),否则工程将无法正常编译.soapStub.h 和soapH.h也要包含进去

   cln.cpp源代码

  #include "stdafx.h"
#include "gsoap/soapWebService1SoapProxy.h"
#include "gsoap/WebService1Soap.nsmap"//名空间定义

int _tmain(int argc, _TCHAR* argv[])
{
 WebService1Soap s;//定义soap对象
 _ns1__HelloWorld request;//定义请求类型
 _ns1__HelloWorldResponse response;//定义响应类型
 s.__ns2__HelloWorld(&request,&response);//调用方法

 return 0;
}