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中下划線開頭的變量,有特殊意義,是私有的。

 

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

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM