HTTPリクエストの応答の処理
この章では、要求モジュールから受け取った応答の詳細について説明します。 次の詳細について説明します-
- 応答を得る
- JSONレスポンス
- RAW応答
- バイナリ応答
応答を得る
request.get()メソッドを使用してURLへのリクエストを作成します。
getdataには応答オブジェクトがあります。 応答の詳細がすべて含まれています。 (text)と(.content)の2つの方法で応答を取得できます。 以下に示すように、response.textを使用すると、データがテキスト形式で返されます-
例
以下に示すようにURLのソースを表示すると、ブラウザにどのように表示されるかと同じように、応答が表示されます-
Typicode
l URLを試して、response.textを使用してコンテンツを表示することもできます。これは、ブラウザでl URLのソースコンテンツを表示するのと同じです。
ここで、同じURLのresponse.contentを試して、出力を見てみましょう。
例
出力
E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "Sincere@april.biz",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website": "hild
egard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n
"username": "Antonette",\n "email": "Shanna@melissa.tv",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist",
\n "catchPhrase": "Proactive didactic contingency",\n "bs":
"synergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name":
"Clementine Bauch",\n "username": "Samantha",\n "email":
"Nathan@yesenia.net",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "ge
o": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
応答はバイト単位で示されます。 応答の最初に b の文字が届きます。 リクエストモジュールを使用すると、エンコーディングを使用でき、必要に応じてエンコーディングを変更することもできます。 たとえば、エンコーディングを取得するには、response.encodingを使用できます。
出力
次のようにエンコーディングを変更できます。-選択したエンコーディングを使用できます。
JSONレスポンス
=
次のようにresponse.json()メソッドを使用して、json形式のHttpリクエストの応答を取得することもできます-
例
出力
RAW応答
=
Http URLの生の応答が必要な場合は、response.rawを使用できます。以下に示すように、getメソッド内に stream = True も追加します-
例
出力
生データからより多くのコンテンツを読み取るには、次のようにすることができます-
出力
バイナリ応答
バイナリ応答を取得するには、response.contentを使用できます。
例
出力
E:\prequests>python makeRequest.py
b'[\n {\n "id": 1,\n "name": "Leanne Graham",\n "username": "Bret",\n
"email": "Sincere@april.biz",\n "address": {\n "street": "Kulas Light
",\n "suite": "Apt. 556",\n "city": "Gwenborough",\n "zipcode": "
92998-3874",\n "geo": {\n "lat": "-37.3159",\n "lng": "81.149
6"\n }\n },\n "phone": "1-770-736-8031 x56442",\n "website":
"hildegard.org",\n "company": {\n "name": "Romaguera-Crona",\n "catchPhr
ase": "Multi-layered client-server neural-net",\n "bs": "harness real-time
e-markets"\n }\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "us
ername": "Antonette",\n "email": "Shanna@melissa.tv",\n "address": {\n
"street": "Victor Plains",\n "suite": "Suite 879",\n "city": "Wisoky
burgh",\n "zipcode": "90566-7771",\n "geo": {\n "lat": "-43.950
9",\n "lng": "-34.4618"\n }\n },\n "phone": "010-692-6593 x091
25",\n "website": "anastasia.net",\n "company": {\n "name": "Deckow-Crist",
\n "catchPhrase": "Proactive didactic contingency",\n "bs": "syn
ergize scalable supply-chains"\n }\n },\n {\n "id": 3,\n "name":
"Clementine Bauch",\n "username": "Samantha",\n "email": "Nathan@yesenia.net",
\n "address": {\n "street": "Douglas Extension",\n "suite": "Suite
847",\n "city": "McKenziehaven",\n "zipcode": "59590-4157",\n "
geo": {\n "lat": "-68.6102",\n "lng": "-47.0653"\n }\n },\n
応答はバイト単位で示されます。 応答の最初に b の文字が届きます。 バイナリ応答は主に非テキスト要求に使用されます。