Не удается отправить правильный почтовый запрос с файлом, используя python3 запросов - PullRequest
0 голосов
/ 01 апреля 2020

Я использовал Postman для отправки почтового запроса, как на скриншоте

screen from postman with successful request

Теперь мне нужно реализовать его в python. Вот что я получил на данный момент:

import requests

data = {"sendRequest": {"apiKey": 12345, "field1": "field1value"}}
files = {"attachment": ("file.txt", open("file.txt", "rb"))}
headers = {"Content-type": "multipart/form-data"}
response = requests.post(endpoint, data=data, headers=headers, files=files)

Но все равно он не работает - сервер не принимает его как действительный запрос. Я пробовал больше комбинаций, но безрезультатно, и я действительно не мог найти решение. Мне нужно, чтобы этот запрос был точно таким же, как у почтальона

1 Ответ

0 голосов
/ 01 апреля 2020

Я наконец нашел решение. Я использовал MultipartEncoder из библиотеки reports_toolbelt.

from requests_toolbelt import MultipartEncoder
import requests
import json

data = {"apiKey": 12345, "field1": "field1value"}}
mp = MultipartEncoder(
    fields={
        'sendRequest': json.dumps(data), # it is important to convert dict into json
        'attachment': ('file.pdf', open('file.pdf', 'rb'), 'multipart/form-data'),
    }
)
r = requests.post(ENDPOINT, data=mp, headers={'Content-Type': mp.content_type})
...