cURL запрос в Python с загрузкой json файла
Всем доброго дня! В питоне не силён, однако стоит задача, и нужно её решить.
Есть такая курла:
curl -viL --basic --user <AccessKey>:<SecretKey> \ -H "Accept: application/json" -d "@request.json" \ -POST "<EndPointURL>"
В командной строке выполняется успешно. Однако нужно как-то выполнить её в питоне, и я не особо понимаю как именно это сделать. Немного погуглив попробовал либу requests, однако при запросе возвращается 403 ошибка.
auth = (self.access_key, self.secret_key)
headers = {'Accept': 'application/json'}
files = {'document': open(json_file, 'rb')}
r = requests.post(method_url, files=files, auth=auth, headers=headers)
Направьте пожалуйста в правильную сторону. Возможно ли вообще подобный запрос выполнить через requests? Или придется ковырять какой-ниубдь pycURL? Может у кого найдутся примеры кода?
UPD Попробовал притвориться браузером - не помогло, результат тот же.
auth = (self.access_key, self.secret_key)
headers = {'Accept': 'application/json', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (K HTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}
files = {'document': open(json_file, 'rb')}
r = requests.post(method_url, files=files, auth=auth, headers=headers)
Ответы (1 шт):
Проблема решена. Косякнул, и передавал файл через параметр files. Конкретно в моём случае в курле файл передаётся в -d:
-d "@request.json"
То есть в requests его нужно было сразу в параметр data закидывать. Итоговый рабочий код:
auth = (self.access_key, self.secret_key)
headers = {
'Accept': 'application/json'
}
data = open(json_file, 'rb')
r = requests.post(method_url, data=data, auth=auth, headers=headers)