2013-07-09 5 views
2

Я пытаюсь использовать Twitch API в веб-приложении Django [python]. Я хочу отправить запрос и получить информацию обратно, но я не знаю, что я делаю.Curl to Python Conversion

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

Как преобразовать этот питон?

Благодаря

+1

Где Вы застряли? Что вы пробовали? Это простой запрос GET с одним заголовком, поэтому вы можете найти всю необходимую информацию в поисковой системе. – Blender

+1

В качестве исходного места см. ['Urlopen'] (http://docs.python.org/3.3/library/urllib.request.html#urllib.request.urlopen). Вместо этого вы можете установить стороннюю библиотеку, например 'запросы' или даже' pycurl', но для чего-то такого тривиального вам это не нужно. – abarnert

ответ

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"} 
+0

Вы могли бы, но почему? Тривиальный случай, подобный этому, так же прост с помощью 'urlopen', который поставляется с Python. – abarnert

+0

@abarnert: Вы правы, я просто думаю, что 'запросы' имеют немного более удобный API. Во всяком случае, добавлен пример с 'urllib2'. – miku

+0

Я согласен, что для чего-либо между тривиальными случаями и действительно неприятными (где вам нужно, например, подключиться к опциям сокета), 'request' определенно проще - иногда намного, намного проще. Я только предлагал придерживаться 'urlopen', потому что это один из тех тривиальных случаев. Во всяком случае, отличный ответ. – abarnert

2

Я обычно использую 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