gsoap 2.8.17 vc webservice

http://blog.csdn.net/xjkstar/article/details/20052443?userName=lanshengsheng2012&userInfo=BBlDFcMRlFZ2YSepAdf6NfozQjj6LgGRHQLecCl27GPNuIhhoWszJReVAq1Sp%2BwhanOrNDHfC9lgbLf0QAye%2Fw%3D%3D

http://blog.csdn.net/lanshengsheng2012/article/details/9268335


结合以上两篇文章 第一篇少了个mytypemap.dat    里面内容为xsd__string = | std::wstring | wchar_t*    (这个是为了解决中文乱码的问题,如果你是全英文可以忽略这个)

把mytypemap.dat 放在gsoap的bin目录


1.开始->运行->cmd

         cd 文件路径        (切换到gsoap的bin目录)

2.wsdl2h命令

   wsdl2h -s -o ***.h -t mytypemap.dat  http://*****?wsdl

这个时候就生成了你自己命名的***.h的头文件


3.soapcpp2 命令

soapcpp2 -i -C ***.h -I D:\gsoap_2.8.17\gsoap-2.8\gsoap\import  

这里我的gsoap是在D盘下的,自行找到你自己的解压目录.

4.执行完成后 会出现一大堆东西,其中xml是不需要的我就删除掉了

del *.xml

5.在bin目录下现在有一堆新的东西,原来我们自己的exe 和 mytypemap.dat保留住,其他的拿到你建立的工程。我建立的是MFC工程 然后复制过去就可以了.


6.这个时候其实还少stdsoap2.cpp 和 stdsoap2.h 这两个文件可以在你所下载的gsoap2.8.17里面找到(在gsoap_2.8.17\gsoap-2.8\gsoap里面).


7.预编译的问题.有两个解决方法:1.在右键点击那几个你放进去的cpp->属性->预编译  那里取消预编译.   2.在所有的cpp文件里面最开始的位置加上#include "stdafx.h"


8.proxy的命名空间.#include "****ServiceSoapBinding.nsmap" 这个包含空间可以有两个放法:1.放在stdsoap2.cpp   2.放在你的工程调用这个webservice的××Dlg.cpp中



剩下就是写代码的问题了:

*******ImplServiceSoapBindingProxy     ws;

这样就可以直接用ws对象去调用函数了。参数信息可以在****ServiceSoapBindingProxy.h里面看到.

gsoap 2.8.17 vc webservice_第1张图片

gsoap 2.8.17 vc webservice_第2张图片

testgetStrings的返回值


int index = 0;
02  
03 int size = re.__sizereturn_;
04 char **s = re.return_;
05  
06 for(; index < size; index++) {
07     char *value = s[index];
08     printf("value[%d] = %s\n", index+1, value);
09     // do something
10 }



希望对大家有用。

你可能感兴趣的:(gsoap 2.8.17 vc webservice)