#python #post #request
#python #Публикация #запрос
Вопрос:
Я пытаюсь отправить POST-запрос с помощью Python для загрузки файла. Я конвертирую следующий пример кода в Python, но я не знаком с тем, как это настроить.
POST /path/to/upload/script HTTP/1.0
Connection: Keep-Alive
User-Agent: My Client App v1.0
Host:
https://bulksell.ebay.com/ws/eBayISAPI.dll?FileExchangeUpload
Content-type: multipart/form-data;
boundary=THIS_STRING_SEPARATES
Content-Length: 256
--THIS_STRING_SEPARATES
Content-Disposition: form-data; name="token"
12345678987654321
--THIS_STRING_SEPARATES
Content-Disposition: form-data; name="file";
filename="listings.csv"
Content-Type: text/csv
... contents of listings.csv ...
--THIS_STRING_SEPARATES
Я думаю, мне нужно установить заголовки следующим образом:
headers = {
"Connection": "Keep-Alive",
"User-Agent": "My Client App v1.0",
"Host": "https://bulksell.ebay.com/ws/eBayISAPI.dll?FileExchangeUpload"
"Content-type": "multipart/form-data;"
"Content-Length": "256",
"Host": "https://bulksell.ebay.com/ws/eBayISAPI.dll?FileExchangeUpload",
...
}
Нужно ли включать эти --THIS_STRING_SEPERATES
строки?
Как мне включить сюда свой токен? Пример просто отправляет его отдельно.
Каков был бы правильный способ форматирования этого для request.post
?
Спасибо.
Комментарии:
1.
--THIS_STRING_SEPERATES
должно быть в теле, чтобы отделить много файлов.2. если вы используете module,
requests
тогда вам нужно использоватьrequests.post(..., files=...)
, и вам не нужно его форматировать. Документ: ОПУБЛИКОВАТЬ файл с кодировкой из нескольких частей3. Я не уверен, но, вероятно, вы можете добавить
token
какrequests.post(... data={'token': '12345678987654321'}, files= ...)
4. если вы используете
requests
, то после отправки данных вы можете проверитьr.request.headers
иr.request.body
посмотреть, как они были отформатированы. В конечном итоге вы можете установить прокси-сервер mitmproxy или Charles и использовать его в своем запросе для просмотра того, что он отправляет — как он был отформатирован.5. Когда вы говорите «вам не нужно его форматировать», могу ли я просто использовать «»»строку»»»» для передачи всего запроса
requests.post(..., files=...)
?