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开发者_JS百科/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.AMANTY.m2t.biz/">
<xs:element name="commandReg" type="tns:commandReg"/>
.......
</xs:schema>
try to include (not import) other xsd's in your wsdl
or simply use SUDS :) It works with newer SOAP-Standards.
精彩评论