简体   繁体   中英

WSDL XSD and soappy

I have the following WSDL and XSD

from SOAPpy import WSDL
import os

# you'll need to configure these two values;
# see http://www.google.com/apis/
WSDLFILE = os.path.join(os.path.dirname(__file__), "getiwsAesPayment.wsdl") 

_server = WSDL.Proxy(WSDLFILE)


print _server

Which gives me the error:

   schema.load(reader)
  File "/home/gregory/.virtualenvs/casadeal/src/soappy/SOAPpy/wstools/XMLSchema.py", line 1205, in load
    tp.fromDom(childNode)
  File "/home/gregory/.virtualenvs/casadeal/src/soappy/SOAPpy/wstools/XMLSchema.py", line 1322, in fromDom
    raise SchemaError, 'namespace of schema and import match'
SOAPpy.wstools.XMLSchema.SchemaError: namespace of schema and import match

Apparently it may come from the fact that the targetNamespace are the same for wsdl and xsd ?

WSDL

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="getiwsAesPayment" targetNamespace="http://ws.AMANTY.m2t.biz/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.AMANTY.m2t.biz/" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <xsd:schema>
      <xsd:import namespace="http://ws.AMANTY.m2t.biz/" schemaLocation="getiwsAesPayment.xsd"/>
    </xsd:schema>
  </types>
  <message name="getiwsaespayment">
    <part name="parameters" element="tns:getiwsaespayment">
    </part>
  </message>
  <message name="getiwsaespaymentResponse">
    <part name="parameters" element="tns:getiwsaespaymentResponse">
    </part>
  </message>
  <portType name="getiwsAesPayment">
    <operation name="getiwsaespayment">
      <input message="tns:getiwsaespayment">
    </input>
      <output message="tns:getiwsaespaymentResponse">
    </output>
    </operation>
  </portType>
  <binding name="getiwsAesPaymentPortBinding" type="tns:getiwsAesPayment">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="getiwsaespayment">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="getiwsAesPaymentService">
    <port name="getiwsAesPaymentPort" binding="tns:getiwsAesPaymentPortBinding">
      <soap:address location="http://partner.ma:8080/AMANTYWebServicesWAR/getiwsAesPayment"/>
    </port>
  </service>
</definitions>

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="1.0" targetNamespace="http://ws.AMANTY.m2t.biz/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.AMANTY.m2t.biz/">

  <xs:element name="commandReg" type="tns:commandReg"/>

   .......
   </xs:schema>

尝试在您的wsdl中包含(而非导入)其他xsd

或直接使用SUDS :)它可与更新的SOAP标准一起使用。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM