与AVS建立HTTP2连接(Python - 请求库)

时间:2016-06-21 19:13:05

标签: http python-requests alexa-voice-service

我跟随amazon's guide创建了一个可以访问Alexa的python应用程序。我已获得访问/刷新令牌,并尝试使用AVS打开HTTP2连接。

由于我在python中这样做,我已经利用requests库管理我所有的HTTP连接。但是,我似乎无法通过与AVS建立连接的第一步。我认为问题只是我的请求中的语法,因为我不确定如何在HTTP调用中表示get请求的某些元素。具体来说,

  

要建立下行通道流,客户端必须在打开与AVS的连接后10秒内向/ {{API version}} /指令发出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会被处理,因为网址以https://开头,:scheme = https被占用照顾,网址本身就照顾好路径(如果我错了,再次纠正我)。然后,我只需将访问密钥作为值传递给authorization,我通过params执行此操作。但是,这不会导致任何成功(具体的错误消息是requests.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:590))。

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

感谢任何帮助!

0 个答案:

没有答案