python で http リクエストをPOSTする。
curl や wget をシェル・スクリプトで呼び出してもいいんだけど、urllib/urllib2 を使う方法も実現可能なのです。
import urllib import urllib2 response ={} url = "https://radiko.jp/v2/api/auth2_fms" headers ={ "pragma":"no-cache", } try : params = urllib.urlencode({'name':1, 'item_id':2}) req = urllib2.Request(url, params ,headers ) res = urllib2.urlopen(req) #print res.read() response["body"] = res.read() response["headers"] = res.info().dict except URLError, e: print e exit() print response["body"]
urllib は リクエストには使わないのですが、リクエストパラメータをURLエンコードするのに必須になるので使っている。
レスポンスのヘッダはres.info()で取れるのですが、dict形式にならないので、明示的に
res.info().dict
として取り出している。
POSTだけでパラメーターはなし。
POSTでリクエストだけ送って、本文は空っぽの場合は、改行を送ればいい。
req = urllib2.Request(url, "\r\n" ,headers )