0

我正在按照亚马逊的指南创建可以访问 Alexa 的 python 应用程序。我已经获得了访问/刷新令牌,并试图打开与 AVS 的 HTTP2 连接。

由于我在 python 中执行此操作,因此我使用requests库来管理我所有的 HTTP 连接内容。但是,我似乎无法通过打开与 AVS 的连接的第一步。我认为问题只是我的请求中的语法,因为我不确定 get 请求的某些元素应该如何在 HTTP 调用中表示。具体来说,

要建立下行通道流,您的客户端必须在打开与 AVS 的连接后 10 秒内向 /{{API version}}/directives 发出 GET 请求。请求应如下所示:

1 :method = GET
2 :scheme = https
3 :path = /{{API version}}/directives
4 authorization = Bearer {{YOUR_ACCESS_TOKEN}}

首先,说明中说明的部分

...在打开与 AVS 的连接后 10 秒内

这会是从 GET 请求单独调用/API version/directives吗?如果是这样,那会是什么样子?

然后,对于 的实际调用/API version/directives,我的代码如下所示(Python):

def establishDownstream():
  url = "https://avs-alexa-na.amazon.com/v20160207/directives"
  foo = "Bearer " + ACCESS_KEY
  payload = {"authorization" : foo}
  g = requests.get(url, params=payload)

我的理由是,因为它是一个requests.get()调用,所以:method = GET处理了,因为 url 以 开头https://:scheme = https处理了,并且 url 本身处理了路径(再次,如果我错了,请纠正我)。然后我只需要将我的访问密钥作为值传递给authorization,我通过params. 但是,这不会导致任何成功(具体的错误消息是requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:590))。

我真的不知道这里发生了什么。我在网上找到的所有关于 HTTP 请求协议的指南都以块的形式构造它们的请求,而不是通过 python 库,所以我没有示例可以处理。

任何帮助表示赞赏!

4

0 回答 0