Multipart data POST с использованием запросов python: не найдено многострочной границы
У меня есть данные формы, а также файл для отправки в том же POST. Например, {продолжительность: 2000, файл: test.wav}. Я видел много потоков здесь, в проводке multipart/form-data, используя запросы python. Они были полезны, особенно этот.
Мой запрос образца выглядит следующим образом:
files = {'file': ('wavfile', open(filename, 'rb'))}
data = {'duration': duration}
headers = {'content-type': 'multipart/form-data'}
r = self.session.post(url, files=files, data=data, headers=headers)
Но когда я выполняю вышеуказанный код, я получаю эту ошибку:
5: 59: 55.338 Dbg 09900 [DEBUG] Исключение исключения из обработчика [null]: org.springframework.web.multipart.MultipartException: не удалось разобрать многосердечный запрос сервлета; Вложенное исключение - org.apache.commons.fileupload.FileUploadException: запрос был отклонен, потому что не было найдено многострочной границы.
Итак, мои вопросы: 1) Как я могу увидеть содержимое отправляемого запроса? Не удалось использовать wirehark, его не по сети.
2) почему граница отсутствует в закодированных данных? Я пропустил что-нибудь, пожалуйста, укажите.
Ответы
Ответ 1
Вы никогда не должны устанавливать этот заголовок самостоятельно. Мы правильно устанавливаем заголовок с границей. Если вы установите этот заголовок, мы не будем, и ваш сервер не будет знать, какую границу ожидать (поскольку он добавлен в заголовок). Удалите свой собственный заголовок Content-Type, и все будет в порядке.
Ответ 2
Вызов заголовка Content-Type с явным "multipart/form-data"!
Ответ 3
Чтобы добавить границу, добавьте в заголовок следующее:
headers = {
'content-type': 'multipart/form-data; boundary=ebf9f03029db4c2799ae16b5428b06bd'
}