Problem with python soap library suds. Wsdl was not understood
The code below throw a SAXParseException: "mismatched tag":
from suds.client impo开发者_StackOverflow中文版rt Client <br>
url = 'http://www.didww.com/api/?wsdl'
client = Client(url, cache=None)
print client
Is it problem with suds, or there is some errors in wsdl?
Have you looked at the WSDL file in a browser or XML viewer? That should answer your question as to whether the problem is in the wsdl. The exception suggests there is something up with it.
Seems to work for me, suds 0.3.3 (without cache option - None is not a valid option for cache in my version of suds):
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
I have tried to reproduce your problem but all works for me.
i'm using suds 0.4
running
from suds.client import Client
client = Client('http://api.didww.com/api/index.php?wsdl', cache=None)
print client
gives
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
I guess they had a broken wsdl file for a bit, but all seems fine now
hope that helps
精彩评论