2017-09-05 4 views
0

Je transfère le code qui a été développé avec suds 0.6 sur zeep 2.4.0.Obtenir zeep.exceptions.ValidationError: Élément manquant pour la méthode qui a fonctionné avec

code suds Précédent:

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

Code 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) 

Puis-je obtenir zeep.exceptions.ValidationError: Missing element param_i_didnt_set. En regardant dans config.__values__ montre

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

L'objet sudsconfig est similaire en ce qu'il contient un certain nombre de clés avec des variables vides, mais suds ne jette pas ValidationErrors.

Répondre

0

De this Github issue J'ai vu l'utilisation de zeep.xsd.SkipValue. J'ai donc fait remplacer de tout paramètre avec aucun dans config avec qui:

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

Et puis ... client.service.exportPerUserData(username,password,config) travaillé