4 votes

Comment construire une requête python post avec un en-tête et un corps ?

Je suis complètement novice en matière de Python. Je dois envoyer une demande d'authentification à un site Web en utilisant les détails de l'en-tête et du corps. J'ai posté le code ci-dessous que j'ai jusqu'à présent. Lorsque je l'exécute, j'obtiens une erreur de syntaxe sur cette ligne :

req.add_header('API-KEY': 'my_api_key', 'ACCOUNT-ID': 'my_account_id', 'Content-Type': 'application/json; charset=UTF-8', 'VERSION': '2')

Pouvez-vous vérifier et me dire où je me suis trompé ?

import urllib.request
import json

body = {'identifier': 'my_id', 'password': 'my_encrypted_pwd', 'encryptedPassword': true}

url = 'https://mywebsite.com/gateway/deal/session'
req = urllib.request.Request(url)
req.add_header('API-KEY': 'my_api_key', 'ACCOUNT-ID': 'my_account_id', 'Content-Type': 'application/json; charset=UTF-8', 'VERSION': '2')
jsondata = json.dumps(body)
jsondataasbytes = jsondata.encode('UTF-8')
req.add_header('Content-Length', len(jsondataasbytes))
print (jsondataasbytes)
response = urllib.request.urlopen(req, jsondataasbytes)

2voto

Sam Chats Points 1329

Je vous suggère d'utiliser le requests car il est plus rapide et tout simplement meilleur que le module urllib.request :

response = requests.put(
        url,
        body, headers={'API-KEY': 'my_api_key',
                       'ACCOUNT-ID': 'my_account_id',
                       'Content-Type': 'application/json; charset=UTF-8',
                       'VERSION': '2'
              }
        )

Maintenant vous pouvez analyser le response vous obtenez comme d'habitude.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X