Python-HTTP応答
httpまたはハイパーテキスト転送プロトコルは、クライアントサーバーモデルで機能します。通常、Webブラウザーがクライアントであり、Webサイトをホストしているコンピューターがサーバーです。クライアントから要求を受信すると、サーバーは応答を生成し、特定の形式でクライアントに送り返します。
要求メッセージを受信して解釈した後、サーバーはHTTP応答メッセージで応答します。
- A Status-line
- Zero or more header (General|Response|Entity) fields followed by CRLF
- An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
- Optionally a message-body
次のセクションでは、HTTP応答メッセージで使用される各エンティティについて説明します。
メッセージステータス-行
Status-Lineは、プロトコルバージョンと、それに続く数値のステータスコードおよび関連するテキストフレーズで構成されます。要素はスペースSP文字で区切られます。
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
HTTPバージョン
HTTPバージョン1.1をサポートするサーバーは、次のバージョン情報を返します。
HTTP-Version = HTTP/1.1
ステータスコード
Status-Code要素は3桁の整数であり、Status-Codeの最初の桁が応答のクラスを定義し、最後の2桁には分類の役割がありません。最初の桁には5つの値があります。
SN | コードと説明 |
---|---|
1 | 1xx: Informational これは、リクエストが受信され、プロセスが続行されていることを意味します。 |
2 | 2xx: Success これは、アクションが正常に受信され、理解され、受け入れられたことを意味します。 |
3 | 3xx: Redirection これは、リクエストを完了するためにさらにアクションを実行する必要があることを意味します。 |
4 | 4xx: Client Error これは、要求に誤った構文が含まれているか、実行できないことを意味します。 |
5 | 5xx: Server Error これは、サーバーが明らかに有効な要求を実行できなかったことを意味します。 |
HTTPステータスコードは拡張可能であり、HTTPアプリケーションは登録されたすべてのステータスコードの意味を理解する必要はありません。
Pythonリクエストの使用
以下のPythonプログラムでは、urllib3モジュールを使用してhttp GETリクエストを作成し、データを含むレスポンスを受信します。また、モジュール内の関数によって管理される応答コードも提供します。PoolManagerオブジェクトは、接続プールのすべての詳細を処理し、スレッドセーフも処理します。
import urllib3
http = urllib3.PoolManager()
resp = http.request('GET', 'http://tutorialspoint.com/robots.txt')
print resp.data
# get the status of the response
print resp.status
上記のプログラムを実行すると、次の出力が得られます-
User-agent: *
Disallow: /tmp
Disallow: /logs
Disallow: /rate/*
Disallow: /cgi-bin/*
Disallow: /videotutorials/video_course_view.php?*
Disallow: /videotutorials/course_view.php?*
Disallow: /videos/*
Disallow: /*/*_question_bank/*
Disallow: //*/*/*/*/src/*
200