代码之家  ›  专栏  ›  技术社区  ›  raphael hexacyanide

正在获取zeep。例外情况。ValidationError:使用SUD的方法缺少元素

  •  7
  • raphael hexacyanide  · 技术社区  · 7 年前

    我正在移植用 suds 0.6 zeep 2.4.0 .

    以前的肥皂水代码:

    client = Client(WSDLfile, proxy=proxy, faults=True)
    config = client.factory.create('perUserDataExportConfiguration')
    config.param1 = 'something'
    ...
    data = client.service.exportPerUserData(username,password,config)
    

    zeep代码:

    session = requests.Session()
    session.verify = False
    transport = Transport(session=session)
    client = Client(WSDLfile, strict=False, transport=transport)
    config = client.type_factory('ns0').perUserDataExportConfiguration()
    config.param1 = 'something'
    ...
    data = client.service.exportPerUserData(username,password,config)
    

    zeep.exceptions.ValidationError: Missing element param_i_didnt_set . 调查 config.__values__

    OrderedDict([('param1', 'something'),
                 ('param_i_didnt_set', None), ...])
    

    suds config 对象的相似之处在于,它包含许多带有空变量的键,但 不会扔 ValidationErrors .

    1 回复  |  直到 7 年前
        1
  •  6
  •   raphael hexacyanide    7 年前

    从…起 this Github issue 我看到了 zeep.xsd.SkipValue . 因此,我在中用None替换了任何参数 config 因此:

    for key in config:
        if config[key] is None:
            config[key] = zeep.xsd.SkipValue
    

    然后 client.service.exportPerUserData(username,password,config)