title: How to pass complex arguments with zeep in Python
body: <p>I have a WSDL that contains a complex type like so:</p>
  
  <pre><code>&lt;s:element name="BatchBillPaymentRequest"&gt;
  &lt;s:complexType&gt;
  &lt;s:sequence&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="requestData" type="tns:ClientBatchBillPaymentRequestData"/&gt;
  &lt;/s:sequence&gt;
  &lt;/s:complexType&gt;
  &lt;/s:element&gt;
  &lt;s:complexType name="ClientBatchBillPaymentRequestData"&gt;
  &lt;s:sequence&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="CallBackUrl" type="s:string"/&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="BillItems" type="tns:ArrayOfClientBatchBillPaymentRequestDataItem"/&gt;
  &lt;/s:sequence&gt;
  &lt;/s:complexType&gt;
  &lt;s:complexType name="ArrayOfClientBatchBillPaymentRequestDataItem"&gt;
  &lt;s:sequence&gt;
  &lt;s:element minOccurs="0" maxOccurs="unbounded" name="ClientBatchBillPaymentRequestDataItem" nillable="true" type="tns:ClientBatchBillPaymentRequestDataItem"/&gt;
  &lt;/s:sequence&gt;
  &lt;/s:complexType&gt;
  &lt;s:complexType name="ClientBatchBillPaymentRequestDataItem"&gt;
  &lt;s:sequence&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="BillId" type="s:string"/&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="PayId" type="s:string"/&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="LoginAccount" type="s:string"/&gt;
  &lt;s:element minOccurs="1" maxOccurs="1" name="OrderId" type="s:long"/&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="AdditionalData" type="s:string"/&gt;
  &lt;/s:sequence&gt;
  &lt;/s:complexType&gt;
  &lt;s:element name="BatchBillPaymentRequestResponse"&gt;
  &lt;s:complexType&gt;
  &lt;s:sequence&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="BatchBillPaymentRequestResult" type="tns:ClientBatchBillPaymentResponseData"/&gt;
  &lt;/s:sequence&gt;
  &lt;/s:complexType&gt;
  &lt;/s:element&gt;
  &lt;s:complexType name="ClientBatchBillPaymentResponseData"&gt;
  &lt;s:complexContent mixed="false"&gt;
  &lt;s:extension base="tns:ResponseDataViewModelBase"&gt;
  &lt;s:sequence&gt;
  &lt;s:element minOccurs="1" maxOccurs="1" name="TotalAmount" type="s:long"/&gt;
  &lt;s:element minOccurs="1" maxOccurs="1" name="BatchToken" type="s:long"/&gt;
  &lt;s:element minOccurs="0" maxOccurs="1" name="BillItems" type="tns:ArrayOfClientBatchBillPaymentResponseDataItem"/&gt;
  &lt;/s:sequence&gt;
  &lt;/s:extension&gt;
  &lt;/s:complexContent&gt;
  &lt;/s:complexType&gt;
  </code></pre>
  
  <p>and I did to the following :</p>
  
  <pre><code>client = Client('https://pec.shaparak.ir/newipgservices/bill/billservice.asmx?WSDL')
  result = client.service.BatchBillPaymentRequest(CallBackUrl=_callBackUrl, BillItems=[{'BillId': '7381116907223',
                                                                                      'PayId': '15870210',
                                                                                      'LoginAccount': 'qazwsx',
                                                                                      'OrderId': 1000,
                                                                                      'AdditionalData': '1'}])
  print(result)
  </code></pre>
  
  <p>the result return this error:</p>
  
  <blockquote>
    <p>BatchBillPaymentRequest() got an unexpected keyword argument
    'BillItems'. Signature: `requestData</p>
  </blockquote>
  
  <p>and when I use this code instead of above code:</p>
  
  <pre><code>data = []
  data.append({'BillId': '7381116907223', 'PayId': '15870210', 'LoginAccount': 'qazwsx', 'OrderId': 1000, 'AdditionalData': '1'})
  
  wsdl = "https://pec.shaparak.ir/newipgservices/bill/billservice.asmx?WSDL"
  client = Client(wsdl=wsdl)
  d = dict(CallBackUrl=_callBackUrl, BillItems=data)
  result = client.service.BatchBillPaymentRequest(d)
  print(result)
  </code></pre>
  
  <p>in this case the result is: "The input parameter or some of its properties is empty"</p>
  
  <p>webservice link is : <a href="https://pec.shaparak.ir/newipgservices/bill/billservice.asmx" rel="nofollow noreferrer">webservice link</a>
  and method is : <a href="https://pec.shaparak.ir/newipgservices/bill/billservice.asmx?op=BatchBillPaymentRequest" rel="nofollow noreferrer">method</a></p>
  
  <p>If anyone knows how to use the above type from the WSDL with zeep, I would be grateful. Thanks.</p>