Python AVS V2建立HTTP2连接
我正在尝试使用Python、请求和Hyper-HTTP20Adapter(用于HTTP/2支持)创建一个HTTP/2连接到AVS(API版本20160207)。我问了一个类似的问题,并确定我的主要问题来自不支持HTTP/2的请求——我相信我已经通过使用Hyper模块解决了这个问题 对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('
GET
一个下行通道流,然后在同一连接上,POST
aSynchronizeState
事件
这是我尝试发送的两个请求:
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)