Python SOAP库suds的问题:未理解WSDL
下面的代码会抛出一个SAXParseException错误,提示“标签不匹配”:
from suds.client import Client <br>
url = 'http://www.didww.com/api/?wsdl'
client = Client(url, cache=None)
print client
这是suds的问题,还是wsdl里面有错误呢?
3 个回答
0
我试着重现你遇到的问题,但对我来说一切都正常。
我使用的是suds 0.4版本。
运行
from suds.client import Client
client = Client('http://api.didww.com/api/index.php?wsdl', cache=None)
print client
得到的结果是
Suds ( https://fedorahosted.org/suds/ ) version: 0.4 GA build: R699-20100913
Service ( DID World Wide ) tns="urn:didww"
Prefixes (2)
ns0 = "http://schemas.xmlsoap.org/soap/encoding/"
ns1 = "urn:didww"
Ports (1):
(DID World WidePort)
Methods (11):
buildmapping(xs:string auth_string, xs:int did_id, xs:string map_proto,s:string map_uri, xs:int add_did, )
change_mapping(xs:string auth_string, xs:string did_number, xs:string map_proto, xs:string map_uri, xs:int add_did, )
did_cancel(xs:string auth_string, xs:string did_number, )
get_did_details(xs:string auth_string, xs:string did_number, )
get_region_details(xs:string auth_string, xs:string uniq, )
getcities(xs:string auth_string, xs:int country_id, )
getcountries(xs:string auth_string, )
new_order_renew(xs:string auth_string, xs:string did_number, xs:int period, xs:int autorenew, )
neworder(xs:string auth_string, xs:string hashkey, xs:string uniq, xs:int autorenew, xs:int period, )
order_autorenew_status(xs:string auth_string, xs:string did_number, xs:int status, )
order_cancel(xs:string auth_string, xs:string did_number, )
Types (55):
ns0:Array
CitiesArray
City
CountriesArray
Country
DID
DID_data
ns0:ENTITIES
ns0:ENTITY
ns0:ID
ns0:IDREF
ns0:IDREFS
ns0:NCName
ns0:NMTOKEN
ns0:NMTOKENS
ns0:NOTATION
ns0:Name
ns0:QName
Region
ns0:Struct
ns0:anyURI
ns0:arrayCoordinate
ns0:base64
ns0:base64Binary
ns0:boolean
ns0:byte
ns0:date
ns0:dateTime
ns0:decimal
ns0:double
ns0:duration
ns0:float
ns0:gDay
ns0:gMonth
ns0:gMonthDay
ns0:gYear
ns0:gYearMonth
ns0:hexBinary
ns0:int
ns0:integer
ns0:language
ns0:long
ns0:negativeInteger
ns0:nonNegativeInteger
ns0:nonPositiveInteger
ns0:normalizedString
ns0:positiveInteger
ns0:short
ns0:string
ns0:time
ns0:token
ns0:unsignedByte
ns0:unsignedInt
ns0:unsignedLong
ns0:unsignedShort
我猜他们之前的wsdl文件有点问题,但现在看起来一切都没问题了。
希望这能帮到你。
1
你有没有在浏览器或者XML查看器中查看过WSDL文件?这样可以帮助你判断问题是不是出在这个文件上。错误提示说明这个文件可能有些问题。
1
看起来对我来说是有效的,我使用的是suds 0.3.3版本(没有缓存选项 - 在我这个版本的suds中,None并不是一个有效的缓存选项):
In [4]: from suds.client import Client
In [5]: url = 'https://xml.192.com/IDSearch.cfc?wsdl'
In [6]: c = Client(url)
In [7]: print c
Suds ( https://fedorahosted.org/suds/ ) version: 0.3.3 GA build: R413-20081204
Service ( IDSearch ) tns="http://corpwsdl.oneninetwo"
Prefixes (1)
ns0 = "http://rpc.xml.coldfusion"
Ports (1):
(IDSearch.cfc)
Methods (1):
search(xs:string xml, )
Types (1):
ns0:CFCInvocationException