Python和suds - 如何获取有关方法参数类型的信息?

jon*_*omo 8 python soap suds

我使用suds从我的Python代码调用SOAP API中的方法.我试图以编程方式确定将哪些信息作为参数发送到API中的方法.我正在看的其中一个WSDL就在这里.

该WSDL中定义了一个具有以下签名的方法:

GetActiveDirectoryObjects(FilterOptions filterOptions)
Run Code Online (Sandbox Code Playgroud)

我可以使用suds为这个WSDL创建一个客户端,然后我可以使用client.factory.create()方法,如下所示:

from suds.client import Client
client = Client('https://controlpanel.msoutlookonline.net/WebServices/ActiveDirectory/ActiveDirectoryService.asmx?WSDL')
client.factory.create('FilterOptions')
Run Code Online (Sandbox Code Playgroud)

输出是:

(FilterOptions){
   AttributesToRead =
      (ArrayOfString){
         string[] = <empty>
      }
   SortBy = None
   SortDirection =
      (SortDirection){
         value = None
      }
   ResultSize = None
   Filter =
      (AndOperation){
         ExtensionData = None
      }
   SearchBase = None
 }
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我是如何使用suds确定'SortBy'是否想要分配字符串或int或布尔值,或者是什么.我知道'AttributesToRead'想要被赋予'ArrayOfString'.我知道'SortDirection'想要被赋予一个'SortDirection'类型的对象.但是SearchBase怎么样?ResultSize?我的程序如何确定自动生成的表单是否应包含将验证int或布尔值或字符串的字段?

查看WSDL XML,我看到以下内容:

<s:complexType name="FilterOptions">
    <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="AttributesToRead" type="tns:ArrayOfString"/>
        <s:element minOccurs="0" maxOccurs="1" name="SortBy" type="s:string"/>
        <s:element minOccurs="1" maxOccurs="1" name="SortDirection" type="tns:SortDirection"/>
        <s:element minOccurs="0" maxOccurs="1" name="ResultSize" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="Filter" type="tns:AndOperation"/>
        <s:element minOccurs="0" maxOccurs="1" name="SearchBase" type="s:string"/>
    </s:sequence>
</s:complexType>
Run Code Online (Sandbox Code Playgroud)

所以我通过手动阅读XML知道'SortBy'想要分配一个字符串 - 但是如何使用suds以编程方式解决这个问题呢?当编写suds的人已经密切关注SOAP规范时,我不想花太多时间编写解析XML的代码来解决这个问题 - 但是获得suds告诉我'SortBy'应该是什么的秘诀是什么?输入'string'?