J'ai utilisé curl pour envoyer des requêtes POST avec les données des fichiers.
J'essaye d'obtenir la même chose en utilisant python module de requêtes. Voici mon script python
import requests
payload=open('data','rb').read()
r = requests.post('https://IP_ADDRESS/rest/rest/2', auth=('userid', 'password'), data=payload , verify=False)
print r.text
Le fichier de données ressemble à ci-dessous
'ID' : 'ISM03'
Mais mon script ne poste pas les données du fichier. Est-ce que j'ai râté quelque chose.
En Curl, j'avais l'habitude d'avoir une commande comme ci-dessous
Curl --data @filename -ik -X POST 'https://IP_ADDRESS/rest/rest/2'
Vous n'avez pas besoin d'utiliser .read()
ici, il vous suffit de diffuser directement l'objet. Vous devez définir explicitement l'en-tête Content-Type; curl
le fait lors de l'utilisation de --data
mais requests
ne le fait pas:
with open('data','rb') as payload:
headers = {'content-type': 'application/x-www-form-urlencoded'}
r = requests.post('https://IP_ADDRESS/rest/rest/2', auth=('userid', 'password'),
data=payload, verify=False, headers=headers)
J'ai utilisé l'objet fichier ouvert comme gestionnaire de contexte afin qu'il soit également fermé automatiquement lorsque le bloc se termine (par exemple, une exception se produit ou requests.post()
revient avec succès).