Мне нужно создать небольшой клиент WebDAV, который просто загружает файлы на сервер.PUT двоичные данные с использованием запросов lib
Я нашел библиотеку «запросов», которая кажется очень простой в использовании, но я не могу ее правильно использовать.
Клиент должен передавать двоичные файлы - так я использовал ниже пример:
>>> url = 'http://IPADDR/webdav'
>>> files = {'report.xls': open('report.xls', 'rb')}
>>> r = requests.post(url, files=files)
из http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file.
Для меня это не работает, у меня есть следующее сообщение об ошибке:
File ".../site-packages/requests/packages/urllib3/connectionpool.py", line 260, in _make_request
conn.request(method, url, **httplib_request_kw)
File ".../httplib.py", line 941, in request
self._send_request(method, url, body, headers)
File ".../httplib.py", line 975, in _send_request
self.endheaders(body)
File ".../httplib.py", line 937, in endheaders
self._send_output(message_body)
File ".../httplib.py", line 795, in _send_output
msg += message_body
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 147: ordinal not in range(128)
должен быть входной файл каким-то образом закодированный? (Я не нашел ничего связанного в документации «запросы»).
У меня такая же проблема. Может быть, метод PUT должен обрабатываться по-разному? Я отредактировал вопрос, чтобы добавить некоторый контекст к ошибке. – zopieux