それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

pythonでhttpリクエスト-POST

python で http リクエストをPOSTする。

curlwget をシェル・スクリプトで呼び出してもいいんだけど、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 )

参考資料

urllib, urllib2を使ってGET/POST - YAMAGUCHI::weblog