Подтвердить что ты не робот

Запросы Python - данные POST из файла

Я использовал curl для отправки запросов POST с данными из файлов.

Я пытаюсь достичь того же, используя модуль запросов python. Вот мой python script

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

Файл данных выглядит ниже

'ID' : 'ISM03'

Но мой script не является отправкой данных из файла. Я что-то упустил.

В Curl у меня была команда вроде ниже

Curl --data @filename -ik -X POST 'https://IP_ADDRESS/rest/rest/2' 
4b9b3361

Ответ 1

Здесь вам не нужно использовать .read(), просто просто передайте объект напрямую. Вам нужно явно указать заголовок Content-Type; curl делает это при использовании --data, но requests не делает:

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)

Я использовал объект открытого файла в качестве менеджера контекста, чтобы он также автоматически закрывался для вас, когда выйдет блок (например, происходит исключение или requests.post()).