Python скрипт, сгенерированный почтальоном, не работает - PullRequest
0 голосов
/ 06 февраля 2020

Код ниже в основном генерируется почтальоном. Я удалил Content-Type из заголовка, так как я понимаю, что это не нужно. Я также обобщил путь URL et c. Однако я получаю сообщение об ошибке: b '{"Message": "Произошла ошибка. Подробности: Ошибка записи многочастной части тела MIME в выходной поток."}'

Однако запрос работает, когда я запускаю его из Почтальона. Что я делаю не так?

import requests

url = "https://website.com/api/inputs/file/upload/Test/12/"

payload = {}
files = [
  ('', open('C:/Users/jmas/Documents/Demo/test.csv','rb'))
]
headers = {
  'Authorization': 'Bearer 0eE6r7DWAIriN6gBR1-5WJI- 
9ZsfgE13JEthzuSXKQ9A05sbt5xdn8cAcV3Sz16D4thYNBcr6dQGdIcivSOpo- 
0dz7tAVP19trL2bwQtQez6FyzZqJFqPQrHm7fLee9eEr5GSpth0JfeqV5Gt7z_juqB3dHDBINu1oxh9G- 
pF8VuSRpUkAOujSMS0RysE1aptVqU1wAXLTXnKxUlDJLpTuQMCQGnFwqNvUWx3mDQ9xh4pw-ZaKw8TMvWaYgtmd1Z- 
oAp2IgvP9bwV5pv5izyuUWIfaZyP0mqYlZu2'
}

response = requests.request("POST", url, headers=headers, data = payload, files = files)

print(response.text.encode('utf8'))
print(response.status_code)

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

Вы передаете полезную нагрузку вместе с запросом, но этот словарь пуст.

Я думаю, вам нужно что-то вроде этого:

url = 'https://website.com/api/inputs/file/upload/Test/12/'

files = {'': open('C:/Users/jmas/Documents/Demo/test.csv', 'rb')}

headers = {
    'Authorization': 'Bearer 0eE6r7DWAIriN6gBR1-5WJI-9ZsfgE13JEthzuSXKQ9A05sbt5xdn8cAcV3Sz16D4thYNBcr6dQGdIcivSOpo -0dz7tAVP19trL2bwQtQez6FyzZqJFqPQrHm7fLee9eEr5GSpth0JfeqV5Gt7z_juqB3dHDBINu1oxh9G -pF8VuSRpUkAOujSMS0RysE1aptVqU1wAXLTXnKxUlDJLpTuQMCQGnFwqNvUWx3mDQ9xh4pw - ZaKw8TMvWaYgtmd1Z - oAp2IgvP9bwV5pv5izyuUWIfaZyP0mqYlZu2'
}

response = requests.post(url, headers=headers, files=files)
print(response)

Казалось, что форматирование ваших заголовков не соответствует правилам pep8, попытайтесь изменить это, чтобы иметь это хорошо отформатированный.

0 голосов
/ 08 февраля 2020

Успех! Я добавил 'text / csv' в параметр files (словарь), и файл успешно загружен.

files = {"file": ("PremSet_2UB_0LB_NoRenewalInfo", 
open('C:/Users/jmas/Documents/Demo/test.csv', 'rb'), 'text/csv')}
0 голосов
/ 06 февраля 2020

Ваша полезная нагрузка - просто пустой словарь. Удалить data = payload

...