Python WSDL-XSD和soappy
我有以下WSDL和XSDPython WSDL-XSD和soappy,python,soap,wsdl,webservice-client,Python,Soap,Wsdl,Webservice Client,我有以下WSDL和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 _serve
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
这给了我一个错误:
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
显然,这可能是因为targetNamespace对于wsdl和xsd是相同的
WSDL
XSD
.......
尝试在wsdl中包含(而不是导入)其他xsd或者简单地使用sud:)
它适用于较新的SOAP标准
<?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>
<?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>