1
首先,我不明白的XML,並不能確定我有什麼問題。我嘗試使用幾個python庫,但其中大多數導致了這個錯誤。 對於當前的設置,我正在使用'zeep'python庫。使用命令來驗證文件:解析wsdl文件導致'Unable to resolve type {http://schemas.xmlsoap.org/soap/encoding/}Array。'
python -mzeep ss.xml
我收到此錯誤:
> zeep.wsdl.wsdl: Creating definition for ss.xml
zeep.wsdl.wsdl: Adding message: {urn:EngineSoap}Mailing_getStatistics
Traceback (most recent call last):
....
File "/usr/lib/python2.7/site-packages/zeep/xsd/schema.py", line 100, in get_type
) % (qname.text, qname.namespace))
KeyError: u"Unable to resolve type {http://schemas.xmlsoap.org/soap/encoding/}Array. No schema available for the namespace u'http://schemas.xmlsoap.org/soap/encoding/'."
和XML文件是:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="EngineSoap" targetNamespace="urn:EngineSoap" xmlns:typens="urn:EngineSoap" xmlns:urn="EngineSoap"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="Mailing_getStatistics">
<part name="mailingID" type="xsd:int"/>
<part name="periodFrom" type="xsd:string"/>
<part name="periodTill" type="xsd:string"/>
<part name="mlid" type="xsd:int"/>
</message>
<message name="Mailing_getStatisticsResponse">
<part name="Mailing_getStatisticsReturn" type="soapenc:Array"/>
</message>
<message name="Mailing_getStatisticsPerLink">
<part name="mailingID" type="xsd:int"/>
<part name="outlink" type="xsd:boolean"/>
<part name="mlid" type="xsd:int"/>
</message>
<message name="Mailing_getStatisticsPerLinkResponse">
<part name="Mailing_getStatisticsPerLinkReturn" type="soapenc:Array"/>
</message>
<binding name="EngineSoapBinding" type="typens:EngineSoapPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Mailing_getStatistics">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailing_getStatisticsPerLink">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailing_createFromContent">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailing_createFromTemplate">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailing_createFromURL">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailinglist_all">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailinglist_getUnsubscriptions">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailinglist_getUnsubscriptionsAsCSV">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailinglist_select">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailinglist_validateTechnicalSettings">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<!-- Mailinglist_getExtraFields -->
<operation name="Mailinglist_getExtraFields">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<!-- Mailinglist_getSubscribersCount -->
<operation name="Mailinglist_getSubscribersCount">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<!-- Mailinglist_getSubscribers -->
<operation name="Mailinglist_getSubscribers">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<!-- Mailinglist_getSubscribersCountSince -->
<operation name="Mailinglist_getSubscribersCountSince">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<!-- Mailinglist_getSubscribersSince -->
<operation name="Mailinglist_getSubscribersSince">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<!-- Mailinglist_getStatisticsPerCampaign -->
<operation name="Mailinglist_getStatisticsPerCampaign">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<!-- Mailinglist_getStatisticsPerSource -->
<operation name="Mailinglist_getStatisticsPerSource">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Mailinglist_getLabels">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Customer_getBouncesForRelay">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_getByEmail">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_getByUniqueID">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_sendMailingToSubscribers">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_sendMailingToSubscribersFromCSV">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_sendMailingToSubscribersFromURL">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_sendMailingToSubscriberWithAttachment">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_set">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_unsubscribe">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_temporaryUnsubscribeByEmail">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_temporaryUnsubscribeByUniqueID">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_assignLabelWeightByEmail">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_assignLabelWeightByUniqueID">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_processLeadByEmail">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="Subscriber_processLeadByUniqueID">
<soap:operation soapAction="urn:EngineSoapAction"/>
<input>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:EngineSoap" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="EngineSoapService">
<port name="EngineSoapPort" binding="typens:EngineSoapBinding">
<soap:address location="http://xxxx/soap/server.live.php"/>
</port>
</service>
</definitions>
WSDL文件看起來很好,我成功SOAP UI進口它。我對zeep沒有太多的想法。你能否請用「wsdl」擴展名重命名文件並嘗試。 – Raju
仍然是同樣的錯誤。我讀過'suds'庫,他們使用某種ImportDoctor來修復導入「http://schemas.xmlsoap.org/soap/encoding/」,基本上錯誤來自'type =「soapenc :陣「' –