Многочастный POST-запрос в Python - PullRequest
0 голосов
/ 08 января 2020

У меня есть следующая команда curl, которая отлично работает в Терминале

curl --location --request POST 'https://online.tet_url' --form license='test_licence' --form product='pdfserver' --form readUSdates='true' --form pdf-filename='@/dir/test.pdf'

Обратите внимание, что имя файла pdf относится к расположению файла pdf на моем локальном компьютере. Когда я пытаюсь использовать python запросить пакет вроде:

url = "https://online.tet_url"
payload = {"license": 'test_licence',
'product': 'pdfserver',
'readUSdates': 'true',
'pdf-filename': '@/dir/test.pd'}
headers = {
  'Content-Type': 'multipart/form-data'
}
response = requests.request("POST", url, headers=headers, data = payload)

Я получаю 400 ошибок со следующим сообщением:

++++++

Apache Tomcat / 8.0.32 - Сообщение об ошибкеH1 {семейство шрифтов: Tahoma, Arial, без засечек; цвет: белый; цвет фона: # 525D76; размер шрифта: 22px;} H2 {семейство шрифтов: Tahoma, Arial, sans-serif; цвет: белый; цвет фона: # 525D76; размер шрифта: 16px;} H3 {font-family: Tahoma, Arial, sans-serif; цвет: белый; цвет фона: # 525D76; размер шрифта : 14px;} BODY {семейство шрифтов: Tahoma, Arial, без засечек; цвет: черный; цвет фона: белый;} B {семейство шрифтов: Tahoma, Arial, без засечек; цвет: белый; цвет фона : # 525D76;} P {семейство шрифтов: Tahoma, Arial, без засечек; фон: белый; цвет: черный; размер шрифта: 12px;} A {цвет: черный;} A.name {цвет: черный;} .line {height: 1px; цвет фона: # 525D76; border: none;}

HTTP-статус 415 - неподдерживаемый тип носителя

тип отчет о состоянии

сообщение неподдерживаемый тип носителя

описание Сервер отклонил этот запрос, поскольку объект запроса находится в формате, не поддерживаемом запрошенным ресурсом для запрошенного метода.

Apache Tomcat / 8.0.32

++++++++

Обратите внимание, что я пытался импортировать его в Postman, и когда я запускал его оттуда, он не работал. Я попытался преобразовать его в python запрос, используя https://curl.haxx.se/docs/manpage.html, и он снова не работал.

Буду признателен, если вы поможете мне опубликовать этот локон, используя Python.

1 Ответ

0 голосов
/ 10 января 2020

Для загрузки документов мы должны использовать отдельный пакет

from pathlib import Path

url = 'https://online.tet_url'
data = {
        'license': 'test_licence',
        'product': 'pdfserver',
        'readUSdates': 'true }
files = {
        'pdf-filename': Path(directory).open('rb'),
        }
response = requests.request('POST', url, data=data, files=files)

...