Я пытаюсь использовать suds version 0.4 с python версии 2.7.1 для доступа к apap apap, но я получаю ошибки, пытаясь создать объект Client. Самая простая форма заключается в следующем:Разбор WSDL с включенными XSD, которые ссылаются друг на друга
from suds.client import Client
url = 'http://tool-sb-api.hescloud.net/session/wsdl'
c = Client(url, cache=None)
ошибка, который производится:
suds.TypeNotFound: Type not found: '(retrieveSessionByIdResponse, http://hes.lbl.gov/scoring_tool/session,)'
Я пробовал несколько вариантов использования ImportDoctor в соответствии с documented подходов, но я получаю ту же ошибку.
После осмотра WSDL и отладочные сообщения из мыльной пены, она, кажется, есть список из включает в себя
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://hes.lbl.gov/scoring_tool/session" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="HesAPI_Session" targetNamespace="http://hes.lbl.gov/scoring_tool/session">
<types>
<xsd:schema targetNamespace="http://hes.lbl.gov/scoring_tool/session">
<xsd:include schemaLocation="http://tool-sb-api.hescloud.net/public/xsd/session/input/newSessionFromAddress.xsd"/>
<xsd:include schemaLocation="http://tool-sb-api.hescloud.net/public/xsd/session/output/newSessionFromAddressResponse.xsd"/>
<xsd:include schemaLocation="http://tool-sb-api.hescloud.net/public/xsd/session/input/newLabelSession.xsd"/>
...
, которые ссылаются друг на друга. Вот пример xsd, который делает это (newSessionFromAddressResponse.xsd).
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://hes.lbl.gov/scoring_tool/session" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://hes.lbl.gov/scoring_tool/session">
<xsd:element name="newSessionFromAddressResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="returnCode" type="xsd:int"/>
<xsd:element name="returnComment" type="xsd:string"/>
<xsd:element name="readOnly" type="xsd:string"/>
<xsd:element ref="tns:AddressList"/>
<!-- RetrieveSessionByIdResponse is defined in retrieveSessionByIdResponse.xsd. In the event of an error, we won't have a retrieveSessionByIdResponse, hence minOccurs=0 -->
<xsd:element ref="tns:retrieveSessionByIdResponse" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AddressList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zipcode" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
кажется мыльной пены возникают проблемы с
<xsd:element ref="tns:retrieveSessionByIdResponse" minOccurs="0" maxOccurs="1"/>
определяется в другом файле.
Я не уверен, что этот WSDL следует за WSI-BP 1.0 в качестве менеджеров этого заявления API или если проблема связана с тем, что пена не может должным образом обработать атрибут «ref».
В любом случае, я был бы счастлив с успешно созданным клиентом.
Уход за предоставлением соответствующего кода? Спасибо – Jorge
@Jorge Извините, это было некоторое время назад. Я не думаю, что код уже существует :) – almostflan