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里面看到.
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 |
} |
希望对大家有用。