首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVS V2建立HTTP2连接

AVS V2建立HTTP2连接
EN

Stack Overflow用户
提问于 2016-06-25 01:51:57
回答 1查看 793关注 0票数 1

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

Amazon's instructions说要GET一个下行信道流,然后在同一连接上POST一个SynchronizeState事件。

这是我发送这两个请求的尝试:

代码语言:javascript
复制
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)

但是,我总是收到这样的错误消息:

代码语言:javascript
复制
INVALID_REQUEST_EXCEPTION, description: No multipart body found in the payload.

即使我删除了post请求中的data=json.dumps(spayload)行并将其替换为json = spayload,这种情况仍然存在。

我有两个主要问题:

1)我不确定我是不是在“同一个连接”上发出了两个请求。我是不是(我以为requests.Session()已经解决了这个问题,但是...)?如果没有,我该怎么做呢?

2)如何解析负载中找不到multipart body消息?我准确地发送了他们的example SynchronizeState event,并且明确表示包含一个空的有效负载。

提前感谢您的帮助!任何事情都会被感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-07-29 01:16:07

1)对不起,我不知道-我在使用适配器时遇到了问题-我的请求没有终止,所以我切换到使用hyper server example中显示的基于异步协议的流程(将其转换为客户端用例并不是太糟糕)

2)我通过确保在最初的GET中发送头部时和在POST中发送数据之后结束流来解决这个问题。(self._conn.send_data(stream_id, sync_post_data, end_stream=True)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38019382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档