簡體   English   中英

在python中使用zeep訪問API時如何修復枚舉錯誤

[英]How to fix enum error while using zeep in python to access API

我正在使用 python 3.6 和 zeep 訪問以下api

我已經設置了客戶端,可以登錄並開始工作。 但是這個電話不起作用,我不知道為什么。

AEclient = zeep.Client(wsdl=AEwsdl, wsse=UsernameToken(AE_username, AE_password), settings = AEsettings)

data = AEclient.service.GetBinData(sessionID = AESessionID, fromLocal = '2/1/2020', toLocal = '2/5/2020', binSize = 15, Fields = {'DataField': [{'FieldName': 'KWHnet', 'Function': '0', 'HID': '10000'}, {'HID': '10000', 'FieldName': 'KW', 'Function': '0'}]})

“我收到以下錯誤:格式化程序在嘗試反序列化消息時拋出異常:嘗試反序列化參數 alsoenergy_ns:binSize 時出錯。InnerException 消息是‘無效枚舉值‘15’無法反序列化為類型‘AlsoEnergyAPI’ .Data.BinSizes'。如果類型具有 DataContractAttribute 屬性,請確保存在必要的枚舉值並用 EnumMemberAttribute 屬性標記。'。有關更多詳細信息,請參閱 InnerException。

我曾嘗試將 binSize 更改為其他明顯的選項,如 0、60 等。我曾嘗試使用 int(15)、'15'、'Bin15Min' 等,但無濟於事。

有兩個變量似乎被“枚舉”了; 函數和 binSize。 如果我從命令中刪除這些,它似乎使用默認值進行處理。 我似乎無法說明適用於枚舉值的內容?

有什么建議或接下來要嘗試的事情嗎?

我不確定秘密是什么,但是當我最終使用 binSize = 'Bin15Min' 和 'function': 'Avg' 時,它起作用了。 我猜這些整數占位符不起作用,但完整的字符串版本可以。

data = AEclient.service.GetBinData(sessionID = AESessionID, fromLocal = '2/1/2020', toLocal = '2/5/2020', binSize = 'Bin15Min', Fields = {'DataField': [{'FieldName': 'KWHnet', 'Function': 'Avg', 'HID': '10000'}]})

暫無
暫無

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

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