2018年8月1日水曜日

Python3 で標準の HTTP Client を使ってみた

概要

おそらく http.client というのが標準なのでそれを使ってみました

環境

  • macOS X 10.13.6
  • Python 3.6.5

GET

とりあえず基本の GET です

  • vim get.py
from http.client import HTTPSConnection

con = HTTPSConnection('kaka-request-dumper.herokuapp.com')
con.request('GET', '/')

res = con.getresponse()
body = res.read()
print(body)
  • python3 get.py

GET + body 付き

  • vim get_with_body.py
from http.client import HTTPSConnection
import json

con = HTTPSConnection('kaka-request-dumper.herokuapp.com')
b = str({'key': 'value'})
h = {'content-type': 'application/json'}
con.request('GET', '/', body=b, headers=h)

res = con.getresponse()
body = json.loads(res.read())
print(body)
print(body['body'])
print(body['media_type'])
  • python3 get_with_body.py

POST + body 付き

  • vim post_with_body.py
from http.client import HTTPSConnection
import json

con = HTTPSConnection('kaka-request-dumper.herokuapp.com')
b = str({'key': 'value'})
h = {'content-type': 'application/json'}
con.request('POST', '/', body=b, headers=h)

res = con.getresponse()
body = json.loads(res.read())
print(body)
print(body['method'])
print(body['body'])
print(body['media_type'])
  • python3 post_with_body.py

最後に

Python3 の http.client を使ってみました
返り値は byte になっているので適宜変更してあげましょう

一点ポイントとしては res.read() は 2 回目に呼び出すと空になっています
この仕様は他の言語の HTTP Client でも普通ですが一応気をつけましょう

今回は https のサイトにアクセスしたので HTTPSConnection を使いました
http のサイトにアクセスするのであれば HTTPConnection を使いましょう

参考サイト

0 件のコメント:

コメントを投稿