Python - Réponse HTTP

Le protocole http ou Hyper Text Transfer fonctionne sur le modèle client-serveur. Habituellement, le navigateur Web est le client et l'ordinateur hébergeant le site Web est le serveur. À la réception d'une demande du client, le serveur génère une réponse et la renvoie au client dans un certain format.

Après avoir reçu et interprété un message de requête, un serveur répond avec un message de réponse 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

Les sections suivantes expliquent chacune des entités utilisées dans un message de réponse HTTP.

Ligne d'état des messages

Une ligne d'état se compose de la version du protocole suivie d'un code d'état numérique et de sa phrase textuelle associée. Les éléments sont séparés par des caractères d'espace SP.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Version HTTP

Un serveur prenant en charge HTTP version 1.1 renverra les informations de version suivantes:

HTTP-Version = HTTP/1.1

Code d'état

L'élément Status-Code est un entier à 3 chiffres où le premier chiffre du Status-Code définit la classe de réponse et les deux derniers chiffres n'ont aucun rôle de catégorisation. Il y a 5 valeurs pour le premier chiffre:

SN Code et description
1 1xx: Informational

Cela signifie que la demande a été reçue et que le processus se poursuit.

2 2xx: Success

Cela signifie que l'action a été reçue, comprise et acceptée avec succès.

3 3xx: Redirection

Cela signifie que des mesures supplémentaires doivent être prises pour terminer la demande.

4 4xx: Client Error

Cela signifie que la demande contient une syntaxe incorrecte ou ne peut pas être satisfaite.

5 5xx: Server Error

Cela signifie que le serveur n'a pas réussi à répondre à une demande apparemment valide.

Les codes d'état HTTP sont extensibles et les applications HTTP ne sont pas obligées de comprendre la signification de tous les codes d'état enregistrés.

Utilisation des requêtes Python

Dans le programme python ci-dessous, nous utilisons le module urllib3 pour faire une requête http GET et recevoir la réponse contenant les données. Il fournit également le code de réponse qui est également géré par les fonctions du module. L'objet PoolManager gère tous les détails du regroupement de connexions et gère également la sécurité des threads.

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

Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -

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