[Python] urllib.request で JSON を POST する

概要

Python に付属している urllib.request を使って JSON を POST する実装例を記載しています。

実装

import json
import logging
import urllib.error
import urllib.request

logging.basicConfig(
    format='%(asctime)-15s %(levelname)s %(message)s',
    level=logging.INFO)


def main():
    data = {
        'data': {
            'key': 'value'
        }
    }

    request = urllib.request.Request(
        'http://localhost:8080/json',
        headers={'Content-Type': 'application/json'},
        data=json.dumps(data).encode('utf-8'))

    try:
        with urllib.request.urlopen(request, timeout=1) as response:
            response_data = json.loads(response.read())
        logging.info(response_data)
    # エラーハンドリング
    except urllib.error.HTTPError as e:
        logging.exception(
            f'Server returned error: '
            f'status = {e.code} reason = {e.reason}')
    except urllib.error.URLError as e:
        logging.exception(
            f'Handler returned error: '
            f'reason = {e.reason}')


if __name__ == '__main__':
    main()

動作確認

前回の記事で作成したWebサーバにリクエストを投げて動作を確認します。

上のウインドウが実装したプログラムを実行している様子です。
下のウインドウは前回の記事で作成したWebサーバのログです。

「[Python] urllib.request で JSON を POST する」への1件のフィードバック

コメントする