gsoap + vc6 + client

来源:互联网 发布:室外效果图制作软件 编辑:程序博客网 时间:2024/06/03 12:53

1. 下载 gsoap_win32_2.7.9f.zip

2. 准备gsoap环境,如下:

 E:./gsoap/
│  soapcpp2.exe
│  soapcpp2_for_client.bat
│  soapcpp2_for_server.bat
│  wsdl2h.bat
│  wsdl2h.exe
│ 
├─import
│      c14n.h
│      dom.h
│      ds.h
│      ds2.h
│      README.txt
│      soap12.h
│      stl.h
│      stldeque.h
│      stllist.h
│      stlset.h
│      stlvector.h
│      WS-example.c
│      WS-example.h
│      WS-Header.h
│      wsa.h
│      wsa3.h
│      wsa4.h
│      wsa5.h
│      wsp.h
│      wsrp.h
│      wsse.h
│      wsse2.h
│      wsu.h
│      xlink.h
│      xmime.h
│      xml.h
│      xmlmime.h
│      xop.h
│     
├─input
│      MyService.wsdl
│     
├─output
│  │  MyService.h
│  │ 
│  ├─client_proxy
│  │      MyServiceSoap.HelloWorld.req.xml
│  │      MyServiceSoap.HelloWorld.res.xml
│  │      MyServiceSoap.nsmap
│  │      soapC.cpp
│  │      soapClient.cpp
│  │      soapClientLib.cpp
│  │      soapH.h
│  │      soapMyServiceSoapProxy.h
│  │      soapStub.h
│  │      stdsoap2.cpp
│  │      stdsoap2.h
│  │     
│  └─server_proxy
│          MyServiceSoap.HelloWorld.req.xml
│          MyServiceSoap.HelloWorld.res.xml
│          MyServiceSoap.nsmap
│          soapC.cpp
│          soapH.h
│          soapMyServiceSoapObject.h
│          soapServer.cpp
│          soapServerLib.cpp
│          soapStub.h
│          stdsoap2.cpp
│          stdsoap2.h
│         
└─stdsoap2
        stdsoap2.cpp
        stdsoap2.h

3. 用vs.net生成一个webservice, 然后生成MyService.wsdl

4. 根据MyService.wsdl生成.h文件,创建一个批处理文件wsdl2h.bat

wsdl2h.exe -o ./output/MyService.h ./input/MyService.wsdl

5. 生成代理源码,(soapcpp2_for_client.bat)

soapcpp2.exe  -C ./output/MyService.h -I import -d ./output/client_proxy
copy ./stdsoap2/*.* ./output/client_proxy

6. 用VC6创建一个dialog project(static mfc)

添加一下文件:

soapC.cpp
soapH.h
soapClient.cpp
soapStub.h
MyServiceSoap.nsmap
soapMyServiceSoapProxy.h
stdsoap2.h
stdsoap2.cpp

7. 在setting|link里设置soapC.cpp,soapClient.cpp ,stdsoap2.cpp不用预编译头文件

8. 添加ws2_32.lib

9.如果出现link错误的话,参考<在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005 错误>

比较乱,写给自己的,怕以后忘了,开始以为gsoap是一个lib呢,用过之后才知道,gsoap是一个生成soap代码的工具而已,生成的代码并不需要借助任何第三方的lib,就可以实现soap client和soap server,以后有时间再尝试写一个soap server,这样就可以摆脱.net用c++来写webservice了