zoukankan      html  css  js  c++  java
  • Python使用suds调用webservice报错解决方法:AttributeError: 'Document' object has no attribute 'set'

     使用python的suds包调用webservice服务接口,报错:AttributeError: 'Document' object has no attribute 'set'

    调用服务接口代码:

    #coding=utf-8
    from suds.client import Client
    
    client = Client('http://port.patentstar.cn/bns/PtDataSvc.asmx?wsdl')
    print client
    
    pt = client.factory.create('PatentDataType')
    res = client.service.GetPatentData('DE10327589B4',pt.PDFFileUrl)
    print res

     

    WSDL服务结构:

     

     

     报错信息:

     

    解决方法:

    通过上图错误信息,错误指定到了appender.py 中的append函数 (此函数注释是我自己更改的)

    以下是报暴出错误,的函数:

    通过,对该函数分析,如果传过来的参数以_下止划线开头,会进行一个特列处理。

    服务接口函数,两个参数都是以下划线开头。

    报错的行为:parent.set(attr,value)

    我们服务接口,参数名都是以下划线开头。于是分析之后,将关于处理下划线的代码行注释掉。

     

     

    更改了suds,包中的文件后,重新调用服务接口。

    结果如下:成功返回正确结果

    至此,问题解决了,问题原因,应该是suds包的作者,没有考虑到其它服务接口,参数以下划线开头。

    因为在python中下划线开头的变量,有特殊意义,是私有的。

    以上是个人理解,如果个位大神,分析出有其它原因,分享一下。多谢谢。

     

     

     

  • 相关阅读:
    linux grep命令
    PHP 利用simplexml_load_file 读取XML对应的字段 然后存入mysql数据库
    php 设计模式之单类模式
    Mac C#开发工具Rider安利与环境配置教程
    模拟,贪心,枚举(二)
    模拟,贪心,枚举
    10.10 review
    review 10.9
    10.6 review
    9.28 review
  • 原文地址:https://www.cnblogs.com/yhleng/p/9413903.html
Copyright © 2011-2022 走看看