2

我正在尝试在 Django [python] Web 应用程序中使用 Twitch API。我想发送一个请求并取回信息,但我真的不知道我在做什么。

curl -H 'Accept: application/vnd.twitchtv.v2+json' -X GET \
    https://api.twitch.tv/kraken/streams/test_channel

我如何转换这个python?

谢谢

4

2 回答 2

7

使用内置urllib2

>>> import urllib2
>>> req = urllib2.Request('https://api.twitch.tv/kraken/streams/test_channel')
>>> req.add_header('Accept', 'application/vnd.twitchtv.v2+json')
>>> resp = urllib2.urlopen(req)
>>> content = resp.read()

如果您使用的是 Python 3.x,则该模块称为urllib.request,否则您可以执行相同的操作。

你也可以使用第三方的 HTTP 库,比如requests,它有一个更简单的 API:

>>> import requests
>>> r = requests.get('https://api.twitch.tv/kraken/streams/test_channel', 
                     headers={'Accept': 'application/vnd.twitchtv.v2+json'})
>>> print(r.status_code)
422 # <- on my machine, YMMV
>>> print(r.text)
{"status":422,"message":"Channel 'test_channel' is not available on Twitch",
 "error":"Unprocessable Entity"}
于 2013-07-09T23:40:09.430 回答
2

我通常在(阻塞)python 应用程序中将 urllib2 用于我的 api 请求。

>>> import urllib2
>>> req = urllib2.Request('https://api.twitch.tv/kraken/streams/test_channel', None, {'Accept':'application/vnd.twitchtv.vs+json'})
>>> response = urllib2.urlopen(req)

然后,您可以访问使用 返回的文本response.read()。从那里您可以使用您喜欢的库解析 JSON,尽管我通常只使用json.loads(response.read()).

不过,我要记住,这是针对 2.7 的,如果您使用的是 python 3,则库已被移动,可以在urllib.request

于 2013-07-10T00:22:50.013 回答