2017-09-05 18 views
0

suds 0.6으로 개발 된 코드를 zeep 2.4.0으로 이식하고 있습니다.zeep.exceptions.ValidationError :

이전 비눗물 코드 :

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), ...]) 

sudsconfig 개체가 비어 변수 키의 수를 포함 비슷 보여 주지만, sudsValidationErrors를 포기하지 않습니다.

답변

0

this Github issue 나는 zeep.xsd.SkipValue의 사용을 보았습니다. 그래서 나는 그와 함께 config에 없음 어떤 매개 변수의 대체 않았다

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

그리고 client.service.exportPerUserData(username,password,config) 일을 ...