Не могу правильно перенести curl / fetch на python - PullRequest
0 голосов
/ 17 апреля 2020

Я сейчас пишу простое приложение для отправки сообщений. Он должен просто отправить сообщение в виде txt-файла на сервер.

Запрос на получение выглядит следующим образом:

fetch(url, 
{"credentials":"include",
"headers":{"accept":"application/json, text/javascript, */*; q=0.01","accept-language":"ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7","content-type":"multipart/form-data; boundary=----WebKitFormBoundaryMdUdjyDYgjOTGBXW","is-api-query":"true","x-requested-with":"XMLHttpRequest"},
"referrer":"",
"referrerPolicy":"no-referrer-when-downgrade",
"body":"------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\n\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"oid\"\r\n\r\n560579\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"uid\"\r\n\r\n20591\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\n2\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"coion\"\r\n\r\n259\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"rec\"\r\n\r\n1\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"upload[]\"; filename=\"sample.txt\"\r\nContent-Type: text/plain\r\n\r\n\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"chht\"\r\n\r\n\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"csctoe\"\r\n\r\n1\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"cuid\"\r\n\r\n133338\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"cclid\"\r\n\r\n2155\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"cwid\"\r\n\r\n0\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW\r\nContent-Disposition: form-data; name=\"coid\"\r\n\r\n589454\r\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW--\r\n",
"method":"POST",
"mode":"cors"});

Он работает нормально и отправляет пустой файл с именем "sample". текст". Но когда я пытаюсь сделать то же самое в Python, сервер возвращает, что тело запроса неверно.

Я пытался отправить его как есть:

headers = {
    'Connection': 'keep-alive',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'is-api-query': 'true',
    'DNT': '1',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
    'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryMdUdjyDYgjOTGBXW',
    'Origin': '',
    'Referer': '',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
}

data = '^------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^text^\\^^\n\n^\n\n^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^oid^\\^^\n\n^\n\n560579^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^uid^\\^^\n\n^\n\n20591^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^type^\\^^\n\n^\n\n2^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^coion^\\^^\n\n^\n\n259^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^recipient^\\^^\n\n^\n\n1^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^upload^[^]^\\^; filename=^\\^sample.txt^\\^^\n\nContent-Type: text/plain^\n\n^\n\n^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^chht^\\^^\n\n^\n\n^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^csctoe^\\^^\n\n^\n\n1^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^cuid^\\^^\n\n^\n\n133338^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^cclid^\\^^\n\n^\n\n2155^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^cwid^\\^^\n\n^\n\n0^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW^\n\nContent-Disposition: form-data; name=^\\^coid^\\^^\n\n^\n\n589454^\n\n------WebKitFormBoundaryMdUdjyDYgjOTGBXW--^\n\n^'

response = requests.post(url, headers=headers, cookies=cookies, data=data)

Я также пытался отправить данные как json .dumps (), но безуспешно.

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...