Python中的Soap调用

| 我试图打电话给肥皂服务。我的呼叫是成功的,但返回空值。下面我附加了我的soap请求和响应模式。它以1d数组作为输入并返回该数组。   请求架构
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">
  <soap:Body>
    <CalculateWeb1D xmlns=\"http://tempuri.org/\">
      <HCID>string</HCID>
      <jaggedobjDataMICRO>
        <string>string</string>
        <string>string</string>
      </jaggedobjDataMICRO>
      <numeratorID>int</numeratorID>
    </CalculateWeb1D>
  </soap:Body>
</soap:Envelope>
  响应模式
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">
  <soap:Body>
    <CalculateWeb1DResponse xmlns=\"http://tempuri.org/\">
      <CalculateWeb1DResult>
        <string>string</string>
        <string>string</string>
      </CalculateWeb1DResult>
    </CalculateWeb1DResponse>
  </soap:Body>
</soap:Envelope>
  我给肥皂服务打电话的代码
from SOAPpy import WSDL

import warnings
warnings.simplefilter(\'ignore\',DeprecationWarning)
import SOAPpy

wsdlFile = \'http://204.9.76.243/nuCast.DataFeedService/Service1.asmx?WSDL\'
server = WSDL.Proxy(wsdlFile)
server.soapproxy.config.dumpSOAPOut = 1
server.soapproxy.config.dumpSOAPIn = 1
print server.CalculateWeb1D(str(1073757),[1,2],99)
  和我的输出
*** Outgoing SOAP ******************************************************
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<SOAP-ENV:Envelope
  SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"
  xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\"
  xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\"
  xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"
  xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"
>
<SOAP-ENV:Body>
<CalculateWeb1D SOAP-ENC:root=\"1\">
<v1 xsi:type=\"xsd:string\">1073757</v1>
<v2 SOAP-ENC:arrayType=\"xsd:int[2]\" xsi:type=\"SOAP-ENC:Array\">
<item>1</item>
<item>2</item>
</v2>
<v3 xsi:type=\"xsd:int\">99</v3>
</CalculateWeb1D>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
************************************************************************
*** Incoming SOAP ******************************************************
<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body><CalculateWeb1DResponse xmlns=\"http://tempuri.org/\" /></soap:Body></soap:Envelope>
************************************************************************
<SOAPpy.Types.structType CalculateWeb1DResponse at 171814380>: {}
请帮助我找到解决方案....     
已邀请:
这是使用
suds
客户端的工作版本:
#!/usr/bin/env python
from suds.xsd.doctor import Import, ImportDoctor
from suds.client import Client

# enable logging to see transmitted XML
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger(\'suds.client\').setLevel(logging.DEBUG)

# fix broken wsdl
# add <s:import namespace=\"http://www.w3.org/2001/XMLSchema\"/> to the wsdl
imp = Import(\'http://www.w3.org/2001/XMLSchema\',
             location=\'http://www.w3.org/2001/XMLSchema.xsd\')
imp.filter.add(\'http://tempuri.org/\')
wsdl_url = \'http://204.9.76.243/nuCast.DataFeedService/Service1.asmx?WSDL\'
client = Client(wsdl_url, doctor=ImportDoctor(imp))

# make request
arrayofstring = client.factory.create(\'ArrayOfString\')
arrayofstring.string = [1,2]
print client.service.CalculateWeb1D(1073757, arrayofstring, 99).string
请求
DEBUG:suds.client:sending to (
   http://204.9.76.243/nuCast.DataFeedService/Service1.asmx)
message:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<SOAP-ENV:Envelope xmlns:ns0=\"http://tempuri.org/\"
   xmlns:ns1=\"http://schemas.xmlsoap.org/soap/envelope/\"
   xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
   xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">
   <SOAP-ENV:Header/>
   <ns1:Body>
      <ns0:CalculateWeb1D>
         <ns0:HCID>1073757</ns0:HCID>
         <ns0:jaggedobjDataMICRO>
            <ns0:string>1</ns0:string>
            <ns0:string>2</ns0:string>
         </ns0:jaggedobjDataMICRO>
         <ns0:numeratorID>99</ns0:numeratorID>
      </ns0:CalculateWeb1D>
   </ns1:Body>
</SOAP-ENV:Envelope>
DEBUG:suds.client:headers = {
  \'SOAPAction\': u\'\"http://tempuri.org/CalculateWeb1D\"\',
  \'Content-Type\': \'text/xml; charset=utf-8\'}
响应
DEBUG:suds.client:http succeeded:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">
  <soap:Body>
    <CalculateWeb1DResponse xmlns=\"http://tempuri.org/\">
      <CalculateWeb1DResult>
        <string>1</string>
        <string>2</string>
      </CalculateWeb1DResult>
    </CalculateWeb1DResponse>
  </soap:Body>
</soap:Envelope>
[1, 2]
    

要回复问题请先登录注册