suds调用webserive的suds.TypeNotFound错误解决

原文链接:https://www.cnblogs.com/elephanyu/p/9136556.html

操作环境:python3.6 + suds-jurko 0.6

======================================================================

一、问题概述

  任务中涉及到调用webservice服务,便使用suds写公共的webservice调用客户端,出现有的调用正常,有的调用异常,很奇怪,google才找到真正的解决方案,特此记录。

  常见公共开发的webservice,用于测试客户端:https://blog.csdn.net/yixiaoping/article/details/16877623(仅部分可使用)

 

二、问题详情

调用手机号webservice服务时正常:

1 # coding:utf-8
2 from suds.client import Client
3 
4 if __name__ == '__main__':
5     client = Client('http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl')
6     print client.service.getMobileCodeInfo('15116020790', '')
7 
8 ## result
9 15116020790:湖南 株洲 湖南移动全球通卡

 

调用天气webservice时出现如下异常:

 1 # coding: utf-8
 2 from suds.client import Client
 3 
 4 if __name__ == '__main__':
 5     client = Client('http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl')
 6     print client
 7 
 8 ## result
 9 File "pakages/suds/xsd/sxbasic.py", line 422, in dependencies
10     raise TypeNotFound(self.ref)
11 suds.TypeNotFound: Type not found: '(schema, http://www.w3.org/2001/XMLSchema, )'

 

三、解决方式

过滤掉一个地址

 1 # coding: utf-8
 2 from suds.client import Client
 3 from suds.xsd.doctor import ImportDoctor, Import
 4 
 5 if __name__ == '__main__':
 6     imp = Import('http://www.w3.org/2001/XMLSchema',
 7                  location='http://www.w3.org/2001/XMLSchema.xsd')
 8     imp.filter.add('http://WebXml.com.cn/')
 9     doctor = ImportDoctor(imp)
10     client = Client('http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl', doctor=doctor)
11     # print client
12     print client.service.getWeatherbyCityName(u'上海')
13 
14 ## result
15 (ArrayOfString){
16    string[] = 
17       "直辖市",
18       "上海",
19       ...,
20       "今日天气实况:气温:23℃;风向/风力:静风 0级;湿度:77%;紫外线强度:弱。空气质量:中。", ...
21  }

(完)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值