use*_*891 3 python api urllib urllib2
编辑 - 因为我无法用Strava标记这里,如果你感兴趣的话,这里是文档 - http://strava.github.io/api/
我完成了身份验证,并在response.read中获取了access_token(以及我的运动员信息).
我在下一步遇到问题:我想返回有关特定活动的信息.
import urllib2
import urllib
access_token = str(tp[3]) #this comes from the response not shown
print access_token
ath_url = 'https://www.strava.com/api/v3/activities/108838256'
ath_val = values={'access_token':access_token}
ath_data = urllib.urlencode (ath_val)
ath_req = urllib2.Request(ath_url, ath_data)
ath_response = urllib2.urlopen(ath_req)
the_page = ath_response.read()
print the_page
Run Code Online (Sandbox Code Playgroud)
错误是
Traceback (most recent call last):
File "C:\Users\JordanR\Python2.6\documents\strava\auth.py", line 30, in <module>
ath_response = urllib2.urlopen(ath_req)
File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 124, in urlopen
return _opener.open(url, data, timeout)
File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 389, in open
response = meth(req, response)
File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 502, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 427, in error
return self._call_chain(*args)
File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 361, in _call_chain
result = func(*args)
File "C:\Users\JordanR\Python2.6\lib\urllib2.py", line 510, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 404: Not Found
Run Code Online (Sandbox Code Playgroud)
404是一个谜题我知道这个活动存在吗?
"access_token"是否是正确的标题信息?文档(http://strava.github.io/api/v3/activities/#get-details)使用授权:承载?我不确定liburl会如何编码信息的Bearer部分?
对不起,如果我的一些术语有点偏,我就是新手.
这个坏男孩回答说.
import requests as r
access_token = tp[3]
ath_url = 'https://www.strava.com/api/v3/activities/108838256'
header = {'Authorization': 'Bearer 4b1d12006c51b685fd1a260490_example_jklfds'}
data = r.get(ath_url, headers=header).json()
Run Code Online (Sandbox Code Playgroud)
它需要在Dict中添加"Bearer"部分.
感谢帮助idClark
我更喜欢使用第三方请求模块.您确实需要遵循文档并使用API中记录的Authorization:Header
请求具有头数据的arg.然后我们可以创建一个dict,其中键是键Authorization,其值是单个字符串Bearer access_token
#install requests from pip if you want
import requests as r
url = 'https://www.strava.com/api/v3/activities/108838256'
header = {'Authorization': 'Bearer access_token'}
r.get(url, headers=header).json()
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用urllib2
#using urllib2
import urllib2
req = urllib.Request(url)
req.add_header('Authorization', 'Bearer access_token')
resp = urllib2.urlopen(req)
content = resp.read()
Run Code Online (Sandbox Code Playgroud)
请记住access_token需要是文字字符串值,例如acc09cds09c097d9c097v9
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |