1-环境变量 用的win32
E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\bin\win32
2-生成代码接口
自己建一个目录,在此打开cmd窗口,生成的文件都会在这个文件夹中。
这里用的手机归宿地。
wsdl2h -o GetPhoneInfo.h -s -n Phone -t ....\typemap.dat http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
soapcpp2 -i -x -C GetPhoneInfo.h -I E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\import
然后目录中会生成一些文件。
说明:E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\import这个路径必须要选,不然会报错
此时路径下会生成一些文件,还需要手动拷贝一些别的文件
3-拷贝必要文件
需要拷贝3个文件过来
文件路径:E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\import
E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap
4-加入工程
把所有文件都添加到qt的工程中。
现在编译还会报一堆错,需要添加一下库文件,在pro文件中添加,路径是自己的编译器路径
LIBS += D:\Qt\Qt5.9.9\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a
在stdsoap2.cpp中添加一个宏定义,在 #define GSOAP_LIB_VERSION 208134 后面
#define WITH_NONAMESPACES
现在编译就不会报错了。
5-获取结果中文乱码
//设置编码,不然中午会乱码
soap_set_mode(&mcsp,SOAP_C_UTFSTRING);
6-接口调用
//这个头文件必要的
#include "gsoap/soapMobileCodeWSSoapProxy.h"
void MainWindow::on_pushButton_clicked()
{
MobileCodeWSSoapProxy mcsp;
_Phone1__getMobileCodeInfo para;
_Phone1__getMobileCodeInfoResponse resp;
//设置编码,不然中午会乱码
soap_set_mode(&mcsp,SOAP_C_UTFSTRING);
para.mobileCode = ui->lineEdit->text().toLatin1().data();
if(mcsp.getMobileCodeInfo(¶,resp) != SOAP_OK)
{
ui->textEdit->append(QString("search %1 is failed").arg(ui->lineEdit->text()));
return;
}
QString recv = (resp.getMobileCodeInfoResult);
qDebug()<<recv;
ui->textEdit->append(recv);
}
7-效果