1

在尝试通过box.net api v2.0.

我正在使用 Python 2.7、OpenSSL 1.0.1c 和requests库。

    payload = {"action":"get_auth_token", "api_key":self.box_apikey, "ticket":self.box_ticket['status'], "verify":False}
    r = requests.get(self.box_secure_endpoint+"rest", params=payload)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 65, in get
    return request('get', url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/safe_mode.py", line 39, in wrapped
    return function(method, url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 51, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 241, in request
    r.send(prefetch=prefetch)
  File "/usr/lib/python2.7/site-packages/requests/models.py", line 641, in send
    raise SSLError(e)
requests.exceptions.SSLError: _ssl.c:316: Invalid SSL protocol variant specified.

笔记:

  • 我也在更深入地研究requestslib,看看是否有某种解决 SSL ver 请求功能的方法。
  • 如果我没记错的话,SSL 证书中的第二位应该指示 SSL 版本。
4

2 回答 2

0

该问题导致验证服务器 ssl 版本支持(显式 ssl.PROTOCOL_SSLv3 | http://docs.python.org/2.7/library/ssl.html#ssl.wrap_socket)。

我将把请求转发给 lib devs 或创建一个补丁来启用显式指定协议的功能。

谢谢你的帮助。:)

于 2012-11-23T14:04:35.253 回答
0

您看到此错误是因为您将verify参数作为请求中的 URL 参数发送,即您要访问的实际 URL 是

https://api.box.com/1.0/rest?action=get_auth_token&api_key=APIKEY&ticket=ticket&verify=False

verify 应该作为关键字参数发送到请求 get 函数的实际调用中,即

r = requests.get(self.box_secure_endpoint+"rest", params=payload, verify=True)
于 2012-11-20T23:55:38.570 回答