2017-09-30 14 views
0

私は、いくつかのデータをwsdl_addressに取得しようとして、Python用のzeep SOAPクライアントを使用しています。私は今、次がありますambCaseは、私は、サーバーに取得したいデータであるxsi:type zeep pythonを指定する方法

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

。 MethodNameメソッドには2つのパラメータが必要です: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

と、次の組み合わせをエラーが働いた:

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 

をあなたがタイプを決定する場合の事は、あなたがメソッドのparamとして辞書を渡すと、ZEEPは(タイプなし)それは自分自身をオブジェクトを作成します、です - 自分でオブジェクトを作成する

関連する問題