PythonでHTTP通信のレスポンスコードを取得する方法

2012年2月18日

pythonでHTTP通信する場合、urllib, urllib2あたりを使うことが多いと思います。

手軽で簡単ではあるのですが、どちらもレスポンスコードを取得することができません。

 

  • urllibについては、python2.6以上であれば、urlopen().getcode()メソッドでサポートされているが、それ以前のバージョンではサポートされていない。
  • urllib2では、2xx系以外は例外が発生するためレスポンスコード取得できない。

 

「レスポンスコードをどうしても取得したい!」という場合は、httplibを使いましょう。

1
2
3
4
5
6
7
8
conn = httplib.HTTPConnection(domain)
conn.request("POST", urlpath, urllib.urlencode(postdata))
resp = conn.getresponse()
http_body = resp.read()

print "response code: %d" % resp.status
print "----------------- HTTP BODY ----------------"
print http_body

 

こんな感じで、resp.statusにてレスポンスコードを参照することが可能です。