2019独角兽企业重金招聘Python工程师标准>>>

SOAPpy 是一个很古老的库,最近的维护都是6年以前了;不知到怎么的就听说这个库了,想用这个库来入手学习WebService,最后证明是掉坑了。

今天下午终于爬坑成功(也就是把几个基本的大坑爬过去了)。

第一个坑在,安装之后,竟然跑不起来:

TypeError: callInfoFromWSDL() takes exactly 3 arguments (2 given)

跑去修改WSDL.py文件,97行,将self作为callInfoFromWSDL的第一个参数。

然后仿照这个博主的文章:http://blog.csdn.net/shuxiaomeng/article/details/6531077 去试着调用天气预报的服务:成功的跑起来了,但是博主就调了一个getSupportProvice方法,可以输出支持的省份名。 接着我去试其它接口,发现只要是需要传参的接口全部是失败。(怪不得那个博主只实现一个示例……) 通过看各种文档,包括官方的和网上各种论坛的。最后我下了一个SoapUI的升级版ReadAPI,用它来做SOAP请求收发实验,定位到的问题所在:名称空间。 解决这个问题,需要两步:第一步是要给方法加上名称空间,加了之后发现参数还是没有名称空间。于是又通过国外论坛发现要修改SOAPBuilder.py文间,在里面修改tag的设置。

  • 给方法添加名称空间的方法如:server.methods["getSupportCity"].namespace=("tns","http://WebXml.com.cn/")
  • 修改tag设置:
        tag = tag or self.gentag()if self.namespace:tag = self.namespace[0] + ":" + tag#tag = ns_map.get(self.namespace) + ":" + tagtag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding

我的改法和那个外国佬说的有点区别,在于对于显式给了name的名称空间,tag会是一个tuple,这样调用ns_map.get的时候会返回None。总之大家记住要在这个地方修改tag成咱们想要的模样,这样得到的方法参数啥的就都有名称空间了。 最后的成果展示在下面:

#encoding=utf-8
from SOAPpy import WSDL,SOAPProxywsdlFile = 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl'server = WSDL.Proxy(wsdlFile)# 下面两行用于输出调试信息
server.soapproxy.config.dumpSOAPOut=1
#server.soapproxy.config.dumpSOAPIn = 1#server.methods["getSupportProvince"].namespace=("sdfsd","http://www.baidu.com")
print server.methods#获取支持的身份
for a in server.getSupportProvince():for i in a:print iprint "*"*30
server.methods["getSupportCity"].namespace=("tns","http://WebXml.com.cn/")#获取省份的城市
for a in server.getSupportCity(byProvinceName=u"湖北"):for i in a:print i#获取天气预报
server.methods["getWeatherbyCityName"].namespace=("tns","http://WebXml.com.cn/")for a in server.getWeatherbyCityName(theCityName=u"武汉"):for i in a:print i

部分输出如下

************************************************************************
湖北
武汉
57494
57494.jpg
2017-10-20 15:50:54
11℃/21℃
10月20日 多云
无持续风向微风
1.gif
1.gif
今日天气实况:气温:20℃;风向/风力:东北风 3级;湿度:55%;紫外线强度:弱。空气质量:中。
紫外线指数:弱,辐射较弱,涂擦SPF12-15、PA+护肤品。
感冒指数:较易发,天凉温差大,适当增减衣服。
穿衣指数:较舒适,建议穿薄外套或牛仔裤等服装。
洗车指数:较适宜,无雨且风力较小,易保持清洁度。
运动指数:适宜,天气较好,尽情感受运动的快乐吧。
空气污染指数:中,易感人群应适当减少室外活动。11℃/22℃
10月21日 晴
无持续风向微风
0.gif
0.gif
13℃/23℃
10月22日 多云转阴
无持续风向微风
1.gif
2.gif
武汉市位于江汉平原东部,长江中游与长江、汉水交汇处。东经113°41′-115°05′,北纬29°58′-31°22′。武汉市地理位置优越,长江及其最大支流汉江交汇于此,将武汉市区天然分成汉口、汉阳和武昌三镇,武汉是我国水陆交通枢纽,控长江中游之咽喉,扼南北交通之要冲,素有“九省通衢”之称,现全市货运吞吐量达亿吨以上。优越的地理位置,成为历代兵家争夺的战略要地。三国时,武汉东湖附近曾是刘备、孙权、曹操进行军事、政治活动的场所,现在留下的有刘备郊天台、吴王庙、曹操庙、洪山宝塔等古建筑。武汉现已发展为中国中部地区工业、金融、商业、科学、文化教育中心。武汉市属亚热带湿润季风气候,雨量充沛、日照充足,四季分明。总体气候环境良好,近几年30年来,年均降雨量1269毫米,且多集中在6-8月。年均气温15.8℃-17.5℃,年无霜期一般为211天-272天,年日照总时数1810小时-2100小时。景观:武当山、长江三峡、神农架等。

总结:中国人虽然多,论坛也热闹,但是都不严谨,往往都没找到问题的根源。最后还是要看国外的论坛上的说法。

这次的教训是,关于网络协议的东东,一定要找到模拟器,这样才能定位问题所在。

有想一起学WebService的同学,联系一下,互相交流交流。

转载于:https://my.oschina.net/backbye/blog/1553972

SOAPpy 调用天气预报WebService相关推荐

  1. Android之ksoap2-android详解与调用天气预报Webservice完整实例

    Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...

  2. java调用天气预报webservice

    代码下载:https://download.csdn.net/download/sinat_36710456/10369688 一.说明 转载该博客中使用的天气预报的webService地址: htt ...

  3. Java中使用SOAP的方式调用天气预报webservice的接口实例

    自己在学习webservice后,做个简单的练习,发现里面真的不是想象的那么简单,还是有好多坑的,以下就是我碰到的坑,只是记录: //1/创建服务 String wsdl="http://w ...

  4. CXF 调用天气预报webservice

    网上公布的天气预报wsdl文件为 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 可是执行wsdl2java命令的时候报一个un ...

  5. html调用天气预报wsdl服务,webservice接口调用天气预报例程

    [实例简介] c# winform 调用公共天气预报webservice接口,初学者参考,大神忽略 [实例截图] [核心代码] WSTest └── WS Test └── WindowsFormsA ...

  6. 一个简单的WebService调用天气预报接口的demo

    很长一段时间没更新博客了,最近刚跳槽成功,工作也慢慢稳定下来了,后面也会陆陆续续更新. 现在的公司用到了WebService,以前没用过,所以学习一下记录下来. 什么是WebService? 首先附上 ...

  7. axis WebServices 完美调用天气预报,查询、显示 代码!

    axis WebServices 完美调用天气预报,查询.显示 代码! 效果: jsp页面: <%@ page language="java" import="ja ...

  8. Java直接AXIS调用远程WebService

    最近项目中需要BPM系统远程调用MESS接口(WebService类型),特此记录资料如下. 一.WebService简介 Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的 ...

  9. java调用天气预报案例

    1.(出处)http://www.cnblogs.com/jason-star/archive/2012/09/25/2702032.html 2.找了老久的.终于在'天边的星星'这位仁兄的博客发现, ...

最新文章

  1. 中医大计算机应用基础考试题6,中医大 计算机应用基础 复习题 参考资料.docx
  2. SVA Function Coverage
  3. python:sort,sorted,argsort,lexsort
  4. LUOGU P2827 蚯蚓 (noip 2016)
  5. vuefullcalendar怎么判断切换上下月_房间太多、楼上楼下,终极解决家里wifi信号无缝切换问题...
  6. linux的NetworkManager服务(转)
  7. 网狐 游戏服务器 没有反应_游戏行业该怎么选择服务器?
  8. 网页设计师必备的35套图标(免费下载)
  9. lambda表达式的语法精简
  10. mysql手机客户端_图解MySQL索引--B-Tree(B+Tree)
  11. 触动精灵怎么设置虚拟服务器,如何调试脚本及解决问题的方法
  12. 解决AD不能导入CAD文件
  13. 一篇文章学会er图绘制
  14. c语言简单的图案设计,分形艺术图案设计
  15. echarts柱形图x轴y轴的字体大小颜色调整
  16. 镜头焦距、光圈、物距与景深之间的关系
  17. 一个有意思的在线绘图(像Flash) - zas 的flash blog |闪客,RIA - 歪酷博客 Ycool Blog
  18. 如何讲好FISHER确切概率法
  19. 清橙OJ A1095 回溯之教室排课
  20. 《木偶奇遇记》读后感

热门文章

  1. 各地软件行业协会通讯录
  2. ExternalInterface接口
  3. 高品质的蓝牙耳机有哪些?四款高品质蓝牙耳机推荐
  4. (转)csv — 逗号分隔值文件格式
  5. linux多路径后链路聚合,mpio – 链路聚合控制协议或多路径I / O.
  6. CSS_文档统筹及样式重置
  7. jquery设置网页背景图片
  8. 手把手教你开发stm32——看门狗(基于hal库)
  9. PM971 BGA佑华烧录器 BGA NVMe SSD专用拷贝机 NVMe SSD烧录机
  10. TI单芯片毫米波雷达代码走读(十三)—— 多普勒维(2D)处理之核心函数