Python &引用;“失踪”;使用sud时的方法属性

Python &引用;“失踪”;使用sud时的方法属性,python,soap,suds,Python,Soap,Suds,我正在用肥皂水开发一个Soap客户端,我遇到了一个问题。我创建客户端并打印它以了解可用的方法: wsdl_url='http://ws04.iula.upf.edu/soaplab2-axis/typed/services/tokenization.freeling_tokenizer?wsdl' FL_ws=Client(wsdl_url) print FL_ws 我的输出是(为了便于阅读,我删除了一些部分): 请注意,有许多方法在结尾处缺少属性,例如:runAndW

我正在用肥皂水开发一个Soap客户端,我遇到了一个问题。我创建客户端并打印它以了解可用的方法:

    wsdl_url='http://ws04.iula.upf.edu/soaplab2-axis/typed/services/tokenization.freeling_tokenizer?wsdl'
    FL_ws=Client(wsdl_url)
    print FL_ws
我的输出是(为了便于阅读,我删除了一些部分):

请注意,有许多方法在结尾处缺少属性,例如:runAndWaitFor(ns1:language,)。根据WISDL,该缺失属性是一个文本,可以作为直接数据或url提供:

<xs:complexType name="appInputs">
 <xs:sequence>
  <xs:choice id="input">
   <xs:element name="input_direct_data" type="xs:string"/>
   <xs:element name="input_url" type="xs:string"/>
  </xs:choice>
  <xs:element name="language">
   <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="en"/>
     <xs:enumeration value="es"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:element>
 </xs:sequence>
</xs:complexType>
因此,我尝试了以下方法:

    input = FL_ws.factory.create('ns1:appInputs')
    input['input_direct_data']='The house is red.'
    input['language']='en'
    result=FL_ws.service.runAndWaitFor(input)
    print result
但是由Suds生成的xml是不正确的:

<ns1:Body>
  <ns0:runAndWaitFor>
     <language>
        <input_direct_data>The house is red.</input_direct_data>
        <language>en</language>
     </language>
  </ns0:runAndWaitFor>
</ns1:Body>
因此,似乎输入未正确到达服务

任何关于如何解决这个问题的想法,或者我如何能弄清楚Suds对这个输入的期望,都将非常有帮助


非常感谢您的帮助。

我找到了一个解决方案:

我使用wisdl创建客户机,但由于某些原因,Suds无法从中正确获取参数。然后,我了解到有另一个wisdl可用于相同的服务。使用它来创建Suds客户端,它能够正确地获得方法的复杂参数,并且我成功地构建了客户端

我尝试访问的服务是使用SoapLab创建的。首先,我认为这个不同愿望的问题与SoapLab如何创建它们有关,但我不是SoapLab的专家,只是这些服务的用户,所以我真的不知道发生了什么。。。另一方面,我能够使用第一个wisdl创建一个perl客户机,所以这可能是SUD的问题

    input = FL_ws.factory.create('ns1:appInputs')
    input['input_direct_data']='The house is red.'
    input['language']='en'
    result=FL_ws.service.runAndWaitFor(input)
    print result
<ns1:Body>
  <ns0:runAndWaitFor>
     <language>
        <input_direct_data>The house is red.</input_direct_data>
        <language>en</language>
     </language>
  </ns0:runAndWaitFor>
</ns1:Body>
suds.WebFault: Server raised fault: 'Soaplab not able to process the input request: '