0

Web サービス (NuSoap) と通信するクライアントを Python で作成しようとしています。識別データとクエリは、エンコード文字列 (base64) として XML で送信されます。この XML は次のとおりです。

<CV3Data version="2.0">
  <request>
    <authenticate>
      <user>m*****</user>
      <pass>m******</pass>
      <serviceID>b*******0</serviceID>
    </authenticate>
    <requests>
      <reqProducts>
        <reqProductRange start="9294" end="9296"/>
      </reqProducts>
    </requests>
  </request>
</CV3Data>

この Web サービスには、次の wsdl があります。

<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://service.commercev3.com/CV3Data.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="https://service.commercev3.com/CV3Data.xsd">
 <types>
  <xsd:schema targetNamespace="https://service.commercev3.com/CV3Data.xsd">
   <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
  </xsd:schema>
 </types>    
 <message name="CV3DataRequest">
  <part name="data" type="xsd:base64Binary"/>
 </message>
 <message name="CV3DataResponse">
  <part name="return" type="xsd:base64Binary"/>
 </message>
 <portType name="CV3Data.xsdPortType">
  <operation name="CV3Data">
   <input message="tns:CV3DataRequest"/>
   <output message="tns:CV3DataResponse"/>
  </operation>
 </portType>
 <binding name="CV3Data.xsdBinding" type="tns:CV3Data.xsdPortType">
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="CV3Data">
   <soap:operation soapAction="http://service.commercev3.com/index.php/CV3Data" style="rpc"/>
   <input>
    <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
 </binding>
 <service name="CV3Data.xsd">
  <port name="CV3Data.xsdPort" binding="tns:CV3Data.xsdBinding">
   <soap:address location="http://service.commercev3.com/index.php"/>
  </port>
 </service>
</definitions>

CV3Data を読み取る必要があります。

4

1 に答える 1

1

「エンコードされた」XML を読み取るには、それを「デコード」する必要があります。:D

添付ファイルをダウンロードする必要がある EWS で suds を使用するプロジェクトがあります。EWS は添付ファイルを Base64Binary で返すので、base64 から b64decode を使用するだけです。このようなものがうまくいくはずです:

from base64 import b64decode

encoded_xml = NuSoapMethodToGetBase64EncodedXMLString()
decoded_xml = b64decode(CV3Data)
于 2013-01-04T22:12:32.173 に答える