Невозможно получить ответ XML от службы SOAP в Python
Я пытаюсь получить ответ / файл XML из службы SOAP.
Некоторые первые замечания: Сам сервис не предоставляется никакой документации, кроме имени пользователя, пароля и URL. Из-за нашего конвейера данных я должен использовать Python для извлечения данных. В качестве альтернативы, если его можно запустить из командной строки Linux, я мог бы поспорить об этом.
После этого, следуя документации Zeep, я запустил это для настройки клиента:
session = Session()
session.auth = HTTPBasicAuth(user, password)
client = Client(url, transport=Transport(session=session))
Единственное, что мне удалось добиться - это:
doc = client.wsdl
doc.dump()
Какие выводы:
Prefixes:
ns0: http://tempuri.org/
xsd: http://www.w3.org/2001/XMLSchema
ns1: http://schemas.microsoft.com/2003/10/Serialization/
Global elements:
ns1:QName(xsd:QName)
ns1:anyType(None)
ns1:anyURI(xsd:anyURI)
ns1:base64Binary(xsd:base64Binary)
ns1:boolean(xsd:boolean)
ns1:byte(xsd:byte)
ns1:char(ns1:char)
ns1:dateTime(xsd:dateTime)
ns1:decimal(xsd:decimal)
ns1:double(xsd:double)
ns1:duration(ns1:duration)
ns1:float(xsd:float)
ns1:guid(ns1:guid)
ns1:int(xsd:int)
ns1:long(xsd:long)
ns1:short(xsd:short)
ns1:string(xsd:string)
ns1:unsignedByte(xsd:unsignedByte)
ns1:unsignedInt(xsd:unsignedInt)
ns1:unsignedLong(xsd:unsignedLong)
ns1:unsignedShort(xsd:unsignedShort)
ns0:DataFeedEcho(value: xsd:string)
ns0:DataFeedEchoResponse(DataFeedEchoResult: xsd:string)
ns0:GetDetectorConfiguration(userName: xsd:string, password: xsd:string)
ns0:GetDetectorConfigurationResponse(GetDetectorConfigurationResult: xsd:string)
ns0:GetDetectorData(userName: xsd:string, password: xsd:string)
ns0:GetDetectorDataResponse(GetDetectorDataResult: xsd:string)
ns0:GetIncidentData(userName: xsd:string, password: xsd:string)
ns0:GetIncidentDataResponse(GetIncidentDataResult: xsd:string)
Global types:
xsd:anyType
ns1:char
ns1:duration
ns1:guid
xsd:ENTITIES
xsd:ENTITY
xsd:ID
xsd:IDREF
xsd:IDREFS
xsd:NCName
xsd:NMTOKEN
xsd:NMTOKENS
xsd:NOTATION
xsd:Name
xsd:QName
xsd:anySimpleType
xsd:anyURI
xsd:base64Binary
xsd:boolean
xsd:byte
xsd:date
xsd:dateTime
xsd:decimal
xsd:double
xsd:duration
xsd:float
xsd:gDay
xsd:gMonth
xsd:gMonthDay
xsd:gYear
xsd:gYearMonth
xsd:hexBinary
xsd:int
xsd:integer
xsd:language
xsd:long
xsd:negativeInteger
xsd:nonNegativeInteger
xsd:nonPositiveInteger
xsd:normalizedString
xsd:positiveInteger
xsd:short
xsd:string
xsd:time
xsd:token
xsd:unsignedByte
xsd:unsignedInt
xsd:unsignedLong
xsd:unsignedShort
Bindings:
Soap11Binding: {http://tempuri.org/}BasicHttpBinding_IDataFeedService
Service: DataFeedService
Port: BasicHttpBinding_IDataFeedService (Soap11Binding: {http://tempuri.org/}BasicHttpBinding_IDataFeedService)
Operations:
DataFeedEcho(value: xsd:string) -> DataFeedEchoResult: xsd:string
GetDetectorConfiguration(userName: xsd:string, password: xsd:string) -> GetDetectorConfigurationResult: xsd:string
GetDetectorData(userName: xsd:string, password: xsd:string) -> GetDetectorDataResult: xsd:string
GetIncidentData(userName: xsd:string, password: xsd:string) -> GetIncidentDataResult: xsd:string
Что, не зная SOAP, но читая Zeep, заставляет меня думать, что я должен быть в состоянии запустить:
incidentData = dfclient.service['GetIncidentData']
incidentData(userName=user, password=password)
Но он возвращает эту ошибку:
ConnectionError: ('Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known'))
Я не совсем уверен, как действовать дальше, но я понимаю, что команда dump должна дать мне то, что мне нужно знать, чтобы заставить это работать, а остальное моя вина?