开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜