Requêtes GET/POST en Python

Requêtes GET/POST en Python #

On peut utiliser le module requests (s’il est installé) ou bien urlopen de la bibliothèque standard.

Requête Get sans paramètre #

from urllib import request
res = urllib.request.urlopen("http://httpbin.org/").read()
# res est de type bytes, il faut le convertir
page = res.decode("utf8")
import requests as rq
r = rq.get("http://httpbin.org/")
# r.content est de type bytes et r.text de type str
# si la chaîne renvoyée était du json, on l'aurait, toute 
# décodée dans r.json
page = r.text

Requête Get avec paramètres #

from urllib import request, parse
import json
data = parse.urlencode({"login":"toto"})
res = request.urlopen("http://httpbin.org/get?{}".format(data)).read()
# res est de type bytes, il faut le convertir
page = res.decode("utf8")
# le résultat se trouve être en json :
print(json.loads(page))
import requests as rq
r = rq.get("http://httpbin.org/get", params={"login": "toto"})
print(r.text)

Requête Post, données envoyées au format application/x-www-form-urlencoded #

from urllib import request, parse
import json
data = parse.urlencode({"login":"toto"}).encode("ascii")
res = request.urlopen("http://httpbin.org/post", data=data).read()
page = res.decode("utf8")
# le résultat se trouve être en json :
print(json.loads(page))
import requests as rq
r = rq.post("http://httpbin.org/post", data={"login": "toto"})
print(r.text)

Requête Post, données envoyées en json #

from urllib import request, parse
import json

jsondata = json.dumps({"login":"toto"}).encode("utf8")

req = request.Request("http://httpbin.org/post")
req.add_header('Content-Type', 'application/json; charset=utf-8')
# req.add_header('Content-Length', len(jsondata)) <= Pas utile généralement

res = request.urlopen(req, jsondata).read()
page = res.decode("utf8")
# le résultat se trouve être en json :
print(json.loads(page))
import requests as rq
r = rq.post("http://httpbin.org/post", json={"login": "toto"})
print(r.text)