QT5 gSoap WebService 调用天气预报

   几年前在vc6下用gSoap 实现了webservice调用,特别是生成代理类,感觉非常方便。现在想在QT5下也用gSoap。出现了两个小问题,折腾了好几天,终于搞定。

首先用wsdl2h和soapcpp2生成源文件就不用说了,网上方法很多。

遇到的问题一是编译,将gsoap源文件加入工程后,编译出现一大堆错误。不要慌,先在.pro里加一句:LIBS += D:\Qt\Qt5.9.7\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a,大部分错误就没有了。只剩下stdsoap2.cpp中的namespaces了,网上有不少方法,比较麻烦,没有采用,只须在stdsoap2.h中 #ifdef _WIN32后加上一句,

#  define WITH_NONAMESPACES

或者,在stdsoap2.cpp 前面包含名称空间文件xxxxSoap.nsmap

#include "WeatherWSSoap.nsmap"

这应该是正解。

编译就顺利通过了。其实,gSoap的可移植性非常强,各种平台各种环境都已经充分考虑到了,只是我们还不太会用罢了。

问题二是汉字编码问题,折腾了半天,最后我只是在soapWeatherWSSoapProxy.cpp文件中修改代理类初始化函数WeatherWSSoapProxy::WeatherWSSoapProxy_init,在开始处加上一句:soap_set_mode(this, SOAP_C_UTFSTRING);  QString很强大,fromUtf8()和toUtf8(),中文问题就轻松解决了。

通过对http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl的测试,没有问题。

全部工程源码可以下载:https://download.csdn.net/download/happy_tom/12000359

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值