Home page de
Michel Casabianca

Actualité
oBlog
oNo Apple
oDebian sur Zotac Nano CI320
oDebian sur Acer C720P
oUn an avec un Raspberry Pi
oLes interfaces du GO
oParseurs YAML pour Go
oIntroduction à YAML
oNotes Formation Perl
oUtiliser le module Ruby MySQL
oUtiliser le module Ruby DBI
oScripts Python avec DB-API

Outils
oBabel
oBee
oTâches Ant
oInstalleur Java
oVisual SQL

MacOSX
oViewCVS sous MacOSX
oEmacs sous Panther

Conférences
oOutils J2EE Open Source
oDév. XML en Java sous Linux
oOutils de dév. Java sous Linux

Articles XML
oIntroduction à XML
oIntroduction à XSLT
oDéveloppement XML en Java
oGénérer des sites web avec Ant
oDTD Ant
oProject X

Articles Java
oTips CodeGuide
oKFM et Jars
oMails en Java
oJava et préprocesseur
oJava et images
oThreads
oÉvénements
oAstuces

Jeux
oAwele
oAtomX
oCore Warrior
oSolitaire
oSpiceWars
oTangram
oTaquin

Simulations
oJeu de la vie
oFourmi de Langton
oTri du couvain
oPiste de chasse

Graphisme
oFractales
oImages 3D
oPowered by ...
oEcce Duke
oTIE

À propos
oDe l'auteur
oDe ce site


Powered by

Powered by Debian
Blog SweetohmIndex Flux RSS

2011-04-22 : Requête HTTP en Python

J'ai eu aujourd'hui besoin de réaliser des requêtes HTTP en Python en contrôlant finement tous les paramètres de la requête (URL bien sûr, mais aussi la méthode, les en-têtes et le corps) et les valeurs de retour (le statut, le message, le corps et les en-têtes). N'ayant rien trouvé répondant à mon besoin, j'ai dû développer ma propre fonction qui pourrait se rendre utile à l'occasion :

import httplib

def http_request(host, path='/', method='GET', body=None, headers={}):
    connection = httplib.HTTPConnection(host)
    connection.request(method, path, body, headers)
    response = connection.getresponse()
    headers = {}
    pairs = response.getheaders()
    if pairs:
        for pair in pairs:
            headers[pair[0]] = pair[1]
    return {'body': response.read(),
        'status': response.status,
        'headers': headers,
        'message': response.reason}

# exemple de requête à Google
response = http_request('google.com')
print "%s %s" % (response['status'], response['message'])
print "Location: %s" % response['headers']['location']

Ce qui donne :

301 Moved Permanently
Location: http://www.google.com/

On lui passe l'hôte et le port à appeler (par exemple foo:8080), le chemin de l'URL (comme /index.html), la méthode (GET, POST, PUT, DELETE ou autre), le corps et les en-têtes (sous la forme d'un dictionnaire). La méthode renvoie un dictionnaire qui contient les entrées body, status, headers et message.

Enjoy!


96 /117