Python AVS V2建立HTTP2连接

Python AVS V2建立HTTP2连接,python,python-requests,http2,alexa-voice-service,Python,Python Requests,Http2,Alexa Voice Service,我正在尝试使用Python、请求和Hyper-HTTP20Adapter(用于HTTP/2支持)创建一个HTTP/2连接到AVS(API版本20160207)。我问了一个类似的问题,并确定我的主要问题来自不支持HTTP/2的请求——我相信我已经通过使用Hyper模块解决了这个问题 对GET一个下行通道流,然后在同一连接上,POSTaSynchronizeState事件 这是我尝试发送的两个请求: downstream = requests.Session() downstream.mount('

我正在尝试使用Python、请求和Hyper-HTTP20Adapter(用于HTTP/2支持)创建一个HTTP/2连接到AVS(API版本20160207)。我问了一个类似的问题,并确定我的主要问题来自不支持HTTP/2的请求——我相信我已经通过使用Hyper模块解决了这个问题

GET
一个下行通道流,然后在同一连接上,
POST
a
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.
即使我取出
post
请求中的
data=json.dumps(spayload)
行并将其替换为
json=spayload
,这种情况仍然存在

我有两个主要问题:

1) 我不确定我是否按照指示在“同一连接”上发出了两个请求。是我(我以为
requests.Session()
已经处理好了,但是…)?如果没有,我会怎么做

2) 如何解析“有效负载中未找到多部分正文”消息?我准确地发送了他们的邮件,它明确地说包括一个空的有效载荷

提前感谢您的帮助!什么都好

1)抱歉,我不知道-我在使用适配器时遇到问题-我的请求没有终止,因此我切换到使用中所示的基于asyncio协议的流(将其转换为客户端用例还不错)

2) 我解决这个问题的方法是确保在初始GET中发送标题时和在POST中发送数据后结束流。(
self.\u conn.send\u data(stream\u id,sync\u post\u data,end\u stream=True)

1)对不起,我不知道-我在使用适配器时遇到问题-我的请求没有终止,所以我切换到使用中所示的基于异步IO协议的流(将其转换为客户端用例还不错)

2) 我解决这个问题的方法是确保在初始GET中发送标题时和在POST中发送数据后结束流。(
self.\u conn.send\u数据(流id、同步发布数据、结束流=True)