簡體   English   中英

如何指定xsi:type zeep python

[英]how to specify xsi:type zeep python

我使用適用於python的zeep SOAP客戶端,試圖將一些數據獲取到wsdl_address。 我現在有以下內容:

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

我想將ambCase數據存儲在服務器上。 MethodName方法需要2個參數:GUID令牌(這沒問題)和具有指定xsi:type屬性的ambCase對象(在我的情況下,它應該是“ CaseAmb”),但我無法使其正常工作,但失敗了錯誤:zeep.exceptions.Fault:異常str()失敗

上面的代碼生成此xml(標頭除外):

<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,所以有人可以幫忙嗎?

通過反復試驗,以下組合有效:

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

事實是,如果您將dict作為方法參數傳遞,則zeep會自己創建該對象(不帶類​​型),如果您想確定類型-自己創建該對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM