Python请求调用失败

时间:2017-03-15 22:17:38

标签: python json ssl https python-requests

我正在AWS上的NGINX Web服务器后面运行Flask restful API。我正在使用我的Pi中的python模块。

当我使用HTTP来调用api时,一切正常。但我只是锁定了我的api所以只有HTTPS是可能的。我更改了我的python模块使用的UIRL,但它现在失败了。代码非常简单......这是一个摘录:

jsonpkg = {'subscriberID': self.api_login, 'token': self.api_token,
              'content': speech_content}
headers = {'Content-Type': 'application/json'}
r = requests.post(self.api_apiurl, data=json.dumps(jsonpkg), headers=headers)

类初始化部分正确设置了这些值。我正在顶部导入请求模块。错误消息表明它正在使用python 2.7。但是,当我监控API时,我发现它甚至没有打到服务器。我可以将浏览器指向api并且其工作正常。

我是否理解python 2.7中的请求模块不支持https?

我需要为https发送其他参数吗?

1 个答案:

答案 0 :(得分:0)

啊哈!通过更多地深入了解请求模块文档,我找到了答案。如果我使用以下

r = requests.post(self.api_apiurl, data=json.dumps(jsonpkg), headers=headers, verify=False)

然后它的工作原理。所以问题在于验证证书。我不太清楚为什么浏览器没有这个...但也许它自动完成额外的东西。所以我要么不需要验证证书,要么有一个可以验证的本地副本(?)。

最终更新:

我终于找到了如何将我的站点证书与链证书连接起来(并了解原因)。这个网站here是一个很好的帮助。此外,一旦它们连接起来,你可能会得到第二个错误,如果你google它你会发现是由于第一个证书之后和第二个证书之前需要回车(用记事本编辑生成的连接文件)。然后,我能够使用“verify = True”返回帖子,这使得没有验证的警告消失了。