cURL与请求(SSL问题?)

时间:2015-04-23 15:39:11

标签: python-2.7 ssl curl python-requests

所有,我在尝试使用https调用请求进入gitub api时遇到了一些奇怪的行为:

@GET
@Path("/{pathPrefix}/{file}")
public Response getImage(@PathParam("pathPrefix") String pathPrefix,
                         @PathParam("file") String file

输出看起来像打印二进制文件(这里没有粘贴乱码输出的点)。

等效的cURL调用(print(requests.get('https://api.github.com/gists/bbc56a82f359eccd4bd6').text) )会产生我期待的JSON响应。

所有这一切都是在修复了一个pip问题(InsecurePlatformWarning)之后开始的,其中安装了一些与安全相关的软件包。 python< 2.7.9的用户需要此修复程序。我在2.7.3上,因为在某些网站上建议不要触摸debian上的python构建(针对依赖性破坏问题)。

请注意我所遇到的问题,例如github3py python API包装器等。

升级后是否有其他人看到了请求问题?任何修复?

2 个答案:

答案 0 :(得分:0)

此URL明显响应不同,具体取决于用户代理。我只需添加-A moo/1即可使curl命令行响应不同。

通过使用类似用户代理的卷曲,您可以通过此请求获得类似卷曲的响应。

甚至更好:只需询问github或阅读他们的API。

答案 1 :(得分:0)

我在这里没有看到这种行为:

>>> import requests
>>> print(requests.get('https://api.github.com/gists/bbc56a82f359eccd4bd6').text)

返回JSON字符串。您可以通过将请求调用的User-Agent更改为cURL的用户代理来尝试进一步调试:

headers = {
    'User-Agent': 'curl/7.38.0',
}
url = 'https://api.github.com/gists/bbc56a82f359eccd4bd6'
response = requests.get(url, headers=headers)