A-A+

python soap协议库 zeep 各种问题解决方法

2019年01月28日 19:27 学习笔记 暂无评论 阅读 222 views 次

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

注意,以下报错都是在python3环境下报错的。

问题一:报错“zeep.exceptions.Fault: Unknown fault occured”

1
2
3
4
5
6
7
8
9
10
11
12
Traceback (most recent call last):
  File "E:/test/ddddddddddddd.py", line 51, in 
    new_vlan = clientVlan.service.createIpObject(args)    #createIpObject
  File "E:\Python37\lib\site-packages\zeep\proxy.py", line 42, in __call__
    self._op_name, args, kwargs)
  File "E:\Python37\lib\site-packages\zeep\wsdl\bindings\soap.py", line 132, in send
    return self.process_reply(client, operation_obj, response)
  File "E:\Python37\lib\site-packages\zeep\wsdl\bindings\soap.py", line 194, in process_reply
    return self.process_error(doc, operation)
  File "E:\Python37\lib\site-packages\zeep\wsdl\bindings\soap.py", line 288, in process_error
    detail=etree_to_string(doc))
zeep.exceptions.Fault: Unknown fault occured

出现这个问题是因为你代码认证写的有问题。
不应该使用【UsernameToken(username, password)】 这是错误的。你应该使用session.auth = HTTPBasicAuth(username, password)方式登录。
其实就是服务器返回401 Unauthorized了。

问题二:报错“AttributeError: 'NoneType' object has no attribute 'promotePrefixes'”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Traceback (most recent call last):
  File "E:/test/test3.py", line 12, in 
    new_vlan = clientServerObj.service.createIpObject(args)
  File "E:\Python37\lib\site-packages\suds\client.py", line 559, in __call__
    return client.invoke(args, kwargs)
  File "E:\Python37\lib\site-packages\suds\client.py", line 618, in invoke
    result = self.send(soapenv)
  File "E:\Python37\lib\site-packages\suds\client.py", line 658, in send
    result = self.succeeded(binding, reply.message)
  File "E:\Python37\lib\site-packages\suds\client.py", line 696, in succeeded
    reply, result = binding.get_reply(self.method, reply)
  File "E:\Python37\lib\site-packages\suds\bindings\binding.py", line 150, in get_reply
    soapenv.promotePrefixes()
AttributeError: 'NoneType' object has no attribute 'promotePrefixes'

你使用的应该是Python3 然后使用了suds-py3库,千万不要使用这个库,这个库不健全,获取post接口的server 地址没有获取到,错误导致的。
所以换库吧,个人推荐你使用zeep 或者 suds-jurko 最好是前者。

有任何问题欢迎随时留言。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×
标签:

给我留言