2017-09-30 17 views
0

Im는 zeep SOAP 클라이언트를 사용하여 일부 데이터를 wsdl_address에 가져 오려고합니다. 지금 다음과 같습니다 :xsi : type zeep python을 지정하는 방법

ambCase = {'data1':'value1', 
     'data2':'value2'} 
client = zeep.Client(wsdl=WSDL_Address) 
result = client.service.MethodName(GUID, {'CaseDto':ambCase}) 

여기서 ambCase는 데이터를 서버에 보내려고합니다. MethodName 메소드에는 GUID 토큰 (아무 문제없이 작동 함)과 지정된 xsi : type 속성이있는 ambCase 객체 (이 경우 'CaseAmb'여야 함)가 필요하며 작동하도록 설정할 수 없습니다. 오류 : zeep.exceptions.Fault : 그래서,

<soap-env:Body> 
<ns0:AddCase xmlns:ns0="http://tempuri.org/"> 
    <ns0:guid>00000000-0000-0000-0000-000000000000</ns0:guid> 
    <ns0:caseDto/> 
</ns0:AddCase> 

내가 SOAP과 zeep 꽤 새로운 해요 : 예외 STR()는

코드는 위의이 XML (제외 헤더를) 생성 실패 , 누구든지 도울 수 있니?

답변

0
재판으로

하고 다음 조합을 오류 일 : 당신이 방법 PARAM로 DICT을 통과 할 경우 유형을 결정하려면

objectType = client.get_type('ns6:someTypeName') # someTypeName will be in xsi:type attribute 
objectWrap = xsd.Element('xmlTagName',objectType) # xmlTagName - name of created xml element 
objectValue = objectWrap('param1',param2,param3[0]) # putting actual data values into object 
client = zeep.Client(wsdl) 
result = client.service.MethodName(objectValue) # calling some method with your object(with explicitly detrmined type) as param 

건은, zeep, 즉 (유형없이) 자신을 개체를 만듭니다한다 - 혼자서 그 물건을 만들자.