Как исправить «zeep.exceptions.ValidationError: Отсутствует значение элемента» - PullRequest
1 голос
/ 19 июня 2019

Я - интеграция Endicia SOAP, и я получил эту ошибку:

"Missing element %s" % (self.name), path=render_path)
zeep.exceptions.ValidationError: Missing element
Value (GetPostageLabel.LabelRequest.Value)

А вот и мой код:

import xml.etree.ElementTree as ET
from zeep import Client, Settings, xsd
from zeep.exceptions import Fault, TransportError, XMLSyntaxError

# Set Connection
settings = Settings(strict=False, xml_huge_tree=True)
client = Client(
'https://elstestserver.endicia.com/LabelService/EwsLabelService.asmx?wsdl',
settings=settings)

# Set label request dictionary
requestDictionary = {
    "MailClass": 'Priority',
    "WeightOz": 16,
    "RequesterID": '',
    "AccountID": '',
    "PassPhrase": '',
    "PartnerCustomerID": '100',
    "PartnerTransactionID": '200',
    "ToName": 'Margaret D Norris',
    "ToAddress1": '2461  Romano Street',
    "ToCity": 'Cambridge',
    "ToState": 'MA',
    "ToPostalCode": '02141',
    "FromCompany": 'Camilla R Goforth',
    "FromName": 'Camilla R Goforth',
    "ReturnAddress1": '1670  Oliverio Drive',
    "FromCity": 'Satanta',
    "FromState": 'KS',
    "FromPostalCode": '67870',
    "CostCenter":'0'
}



# Try operation
try:
    response = client.service.GetPostageLabel(LabelRequest=requestDictionary)
    print(response)


except Fault as error:
    print(ET.tostring(error.detail))


Кто-нибудь может помочь?

Я пытался изменить структуру входных данных, но это не поможет Я ожидаю, что выходные данные response = client.service.GetPostageLabel(LabelRequest=requestDictionary) и print(response) будут примерно такими, как показано на этой странице .

1 Ответ

0 голосов
/ 19 июня 2019

В документации, на которую вы ссылаетесь, написано:

RequesterID требуется для указания того, кто делает запрос.

Ваш requestDictionary имеет предмет для RequesterID:

...
"RequesterID": '',
...

Ваша ошибка говорит

Отсутствует значение элемента (GetPostageLabel.LabelRequest.Value)

Я думаю, вам не хватает значения для RequesterID.

...