Python http通信のサンプル

目次

(確認環境:Python 3)

Pythonのコードでサーバ側とクライアント側を作成します。

GETを受けるhttpサーバー

GETを受けるhttpサーバーのサンプルです。

from http.server import HTTPServer
from http.server import BaseHTTPRequestHandler

class class1(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header("User-Agent","test1")
        self.end_headers()
        html = "abc"
        self.wfile.write(html.encode())

ip = '127.0.0.1'
port = 8765

server = HTTPServer((ip, port), class1)

server.serve_forever()

5行目のdo_GetでGETを受けます。「do_Get」以外ではGETを受けられずエラーになります。
7行目は、レスポンスヘッダーに、User-Agent:test1をセットします。
10行目は、画面上にabcと表示します。

GETでサーバーにアクセスする

1.サーバを起動する

コマンドプロンプトを立ち上げて、上記コードを実行しサーバを起動します。

2.ブラウザにアドレスを入力する

次にブラウザに、http://127.0.0.1:8765/を入力すると以下のようにGETと表示されます。

サーバーから返すレスポンスヘッダーには、上記コードで設定した値が表示されます。
Server:にpython/3.8.5と書いてあります。

コードでアクセスする場合

以下は、Getで上記サーバにアクセスするコードのサンプルです。

import requests

url = 'http://localhost:8765'

response = requests.get(url)
print(response.text)

5行目は、getメソッドを使用しています。
1行目のrequestsは、pipからインストールします。
Python pipでインストールする(Windows)

POSTを受けるhttpサーバー

POSTを受けるhttpサーバーのサンプルです。

from http.server import HTTPServer
from http.server import BaseHTTPRequestHandler

class class1(BaseHTTPRequestHandler):
    def do_POST(self):
        self.send_response(200)
        self.send_header("User-Agent","test1")
        self.end_headers()
        html = "abc"
        self.wfile.write(html.encode())

ip = '127.0.0.1'
port = 8765

server = HTTPServer((ip, port), class1)

server.serve_forever()

5行目をdo_POSTにしています。「do_POST」以外ではPOSTを受けられずエラーになります。
10行目は、画面上にabcと表示します。

POSTでサーバーにアクセスする

以下は、POSTで上記サーバにアクセスするコードのサンプルです。

import requests

url = 'http://localhost:8765'

test1 = {
    "color1": "赤",
    "color2": "黄"
}

response = requests.post(url, test1)
print(response.text)

10行目は、postメソッドを使用しています。
1行目のrequestsは、pipからインストールします。
Python pipでインストールする(Windows)

通信時、サーバー側のコマンドプロンプトでは以下のようにPOSTと表示されます。

以下は、Requestsの使い方のリンクです。
https://requests-docs-ja.readthedocs.io/en/latest/user/quickstart/

関連の記事

Python ソケット通信のサンプル

△上に戻る