2010-11-30 34 views
0

je le WSDL et XSDWSDL XSD et 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 

suivante Ce qui me donne l'erreur:

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 

Apparemment, il peut provenir du fait que les targetNamespace sont les mêmes pour 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> 

Répondre

0

essayer d'inclure (pas importer) les autres XSD est dans votre wsdl

0

ou tout simplement utiliser SUDS :) Il fonctionne avec les nouveaux SOAP normes .

+1

si vous êtes chanceux :( – Jannis