Я пытаюсь создать соединение HTTP/2 с помощью Python, Requests и Hyper HTTP20Adapter (для поддержки HTTP/2) с AVS (версия 20160207 API). Я задал аналогичный вопрос здесь и определил, что мой основной проблема исходила от запросов, не поддерживающих HTTP/2 - я думаю, что исправил это с помощью модуля Hyper.
инструкции Amazon скажите GET
поток нисходящего канала, затем в том же соединении POST
событие SynchronizeState
.
Это моя попытка отправить два запроса:
downstream = requests.Session()
downstream.mount('https://avs-alexa-na.amazon.com', HTTP20Adapter())
qheader = {"authorization": "Bearer " + ACCESS_KEY}
sheader = {"authorization": "Bearer " + ACCESS_KEY, "Content-Disposition": "form-data; name=metadata","Content-Type": "application/json; charset=UTF-8"}
spayload = {"context": [],"event": {"header":{"namespace":"System","name":"SynchronizeState","messageId":"SyncState",},"payload": {}}}
q = downstream.get("https://avs-alexa-na.amazon.com/v20160207/directives", headers=qheader, stream=True)
s = downstream.post("https://avs-alexa-na.amazon.com/v20160207/events", headers=sheader, data=json.dumps(spayload)
Однако я постоянно получаю это сообщение об ошибке:
INVALID_REQUEST_EXCEPTION, description: No multipart body found in the payload.
Это сохраняется, даже если я удалю строку data=json.dumps(spayload)
в запросе post
и заменю ее на json = spayload
.
У меня два основных вопроса:
1) Я не уверен, что выполняю оба запроса по «одному и тому же соединению» в соответствии с инструкциями. Я (я думал, что requests.Session()
позаботился об этом, но...)? Если нет, то как бы я это сделал?
2) Как устранить сообщение «В полезной нагрузке не найдено составное тело»? Я точно отправил их пример события SynchronizeState, и он специально сказал включать пустую полезную нагрузку.
Заранее спасибо за помощь! Все ценится!