Как исправить ошибку enum при использовании zeep в python для доступа к API - PullRequest
0 голосов
/ 28 февраля 2020

Я использую 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'}]})

"Я получаю следующую ошибку: Программа форматирования вызвала исключение при попытке десериализации сообщения: во время произошла ошибка при попытке десериализации параметра такжеenergy_ns: binSize. Сообщение InnerException «Недопустимое значение перечисления« 15 »не может быть десериализовано в тип« ТакжеEnergyAPI.Data.BinSizes ». Убедитесь, что присутствуют необходимые значения перечисления и помечены атрибутом EnumMemberAttribute, если тип имеет Атрибут DataContractAttribute. '. Для получения более подробной информации см. InnerException. "

Я попытался изменить binSize на другие очевидные параметры, такие как 0, 60 и т. Д. c. Я пытался использовать int (15), '15', 'Bin15Min' и др. c. безрезультатно.

Есть две переменные, которые кажутся «перечисленными»; Функция и binSize. Если я удаляю их из команды, кажется, что они обрабатываются со значениями по умолчанию. Кажется, я просто не могу сформулировать что-то, что работает со значениями перечисления?

Есть предложения или что-то еще попробовать?

1 Ответ

0 голосов
/ 28 февраля 2020

Я не уверен, в чем секрет, но когда я наконец использовал 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'}]})
...