Requêtes GET/POST en Python #
On peut utiliser le module requests
(s’il est installé) ou bien
urlopen
de la bibliothèque standard.
- Documentation urllib : https://docs.python.org/3/library/urllib.request.html
- Documentation requests : http://docs.python-requests.org/en/master/
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)