SOAP-запрос с Zeep (Python) - PullRequest
       93

SOAP-запрос с Zeep (Python)

0 голосов
/ 07 ноября 2019

Я пытаюсь отправить запрос SOAP с использованием модуля Zeep в Python. python -mzeep XXXXXXXX.wsdl возвращает следующее:

Префиксы:

 xsd: http://www.AA.org/2003/XMLSchema
 ns0: http://www.bbbb.com/PM/BLS

Глобальные элементы:

 ns0:GetBalReq(header: ns0:RequestHeader, custId: xsd:string, customAvpList: ns0:AttributeValuePairList)
 ns0:GetBalResp(nalId: xsd:string, custId: xsd:string, custRole: xsd:string, nalType: xsd:string, bal: ns0:BalDetailsList, customAvpList: ns0:AttributeValuePairList)

Глобальные типы:

 xsd:anyType
 ns0:AttributeValuePair(attribute: xsd:string, value: xsd:string)
 ns0:AttributeValuePairList(item: ns0:AttributeValuePair[])
 ns0:BalDetailsList(item: ns0:BalDetails[])
 ns0:RequestHeader(auditInfo: xsd:string, transactionId: xsd:string)
 xsd:string

Привязки:

 Soap11Binding: {http://www.bbbb.com/PM/BLS}BLS

Служба: BLS

 Port: BLS (Soap11Binding: {http://www.bbbb.com/PM/BLS}BLS)

     Operations:
        getBalReq(header: ns0:RequestHeader, custId: xsd:string, customAvpList: ns0:AttributeValuePairList) -> nalId: xsd:string, custId: xsd:string, custRole: xsd:string, nalType: xsd:string, bal: ns0:BalDetailsList, customAvpList: ns0:AttributeValuePairList

просто следующим образом:

from zeep import Client
client = Client('XXXXXXXX.wsdl')
client.service.getBalReq(custId='12345678')

Я получаю следующую ошибку:

"Missing element %s" % (self.name), path=render_path

zeep.exceptions.ValidationError: Missing element header (GetBalReq.header)

Последние 2 дня я ломал голову над тем, как заставить это работать, как правильно отправить запрос, чтобы получить правильный ответ, прочитать документацию, форумы и т. Д., Но просто не могу понять. Есть идеи для правильного кода?

1 Ответ

0 голосов
/ 08 ноября 2019

Вы должны передать параметр 'header' методу 'getBalReq', как показано ниже.

    from zeep import Client
    client = Client('XXXXXXXX.wsdl')

    header_request = client.get_type('ns0:RequestHeader')
    header = header_request(auditInfo = your_auditInfo,transactionId = your_transactionId)
    client.service.getBalReq(header=header, custId='12345678', customAvpList = your_customAvpList)

Если customAvpList является необязательным параметром, его можно игнорировать.

...