如何在Python WSDL SOAP客户端

时间:2017-09-13 17:39:59

标签: c# python soap suds

将Python与Suds或Zeep等SOAP客户端一起使用,如果我有一个将params定义为ref或out的API,我该如何定义它们并读取它们。

e.g。一个c#方法定义如下:

// this is c# code...
bool MyApi( 
  string regularParam1, 
  int regularParam2, 
  ref string refParam3, // set by caller, changed by service, 
                        // used as part of the result
  out string outParam4) // marked as 'out', caller not to set any value, 
                        // changed by service and used as part of the result

肥皂看起来如此:

<soap:Body>
  <MyApi xmlns="http://mywebservice.myapi.com/">
    <regularParam1>string</regularParam1>
    <regularParam2>int</regularParam2>
    <refParam3>string</refParam3>
    <outParam4>string</outParam4>

<soap:Body>
  <MyApiResponse xmlns="http://mywebservice.myapi.com/">
    <MyApiResult>bool<MyApiResult>
    <refParam3>string</refParam3>
    <outParam4>string</outParam4>

我认为(但不确定)ref param和out param都期望一个将接收结果的对象。 out内容应为“空”,ref对象的内容可以包含值。我不知道这是如何在内部工作的。

我经历了the list of Python SOAP frameworks in Samat Jain's excellent answer on a different SO question但未在任何列出的框架中找到关于该主题的讨论。

问题是python中没有refout参数。

相反,python函数调用可以返回多个值,单个argurments可以包含多个值(即元组)。但是,当它在服务中和SOAP中定义时,我该怎么做?

一个。如何在调用客户端中定义这些参数?我是否必须做一些特殊的事情,或者只是创建常规参数?

湾如何自动获取生成的额外字段(定义后)?或者我必须阅读生成的SOAP xml并自己解析它吗?

注意:这些outref参数是结果的一部分,但不是return-value的一部分,在上面的示例中,它是一个简单的布尔值。

℃。如果在Zeep或SUDS中无法做到这一点,还有其他一些可以实现的框架吗?

similar unanswered SO question(我为了清晰起见而编辑),但它特定于可能由未正确定义的ref参数引起的Zeep错误。

0 个答案:

没有答案