2010-11-30 73 views
0

我有以下的WSDL和XSDWSDL XSD和SOAPpy的

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 

顯然,它可能來自一個事實,即目標名稱是WSDL相同, 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> 

回答

0

嘗試包括(未進口)其他XSD在您的WSDL

0

或者乾脆用肥皂水:) 它與新的SOAP-標準。

+1

如果你是幸運的:( – Jannis 2014-02-05 13:51:31