Python &引用;“失踪”;使用sud时的方法属性
我正在用肥皂水开发一个Soap客户端,我遇到了一个问题。我创建客户端并打印它以了解可用的方法: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
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: '