2012-02-15 2 views
3

Мне нужно создать небольшой клиент 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) 

должен быть входной файл каким-то образом закодированный? (Я не нашел ничего связанного в документации «запросы»).

+0

У меня такая же проблема. Может быть, метод PUT должен обрабатываться по-разному? Я отредактировал вопрос, чтобы добавить некоторый контекст к ошибке. – zopieux

ответ

0

После некоторой отладки я действительно нашел, что происходит.

Я был в состоянии решить проблему, удалив следующий импорт в моем сценарии:

from __future__ import unicode_literals 

Этот импорт, кажется, вызывает unwanted string conversions в urllib3 (который просит опирающийся на). В качестве автора просьбы explained этот вопрос должен быть подан против urllib3.

+0

Наконец, я разработал клиент на Java, поэтому я не могу проверить ваше решение. Но если бы у вас была такая же проблема и ее решить, я приму этот ответ. – ovi2ut

Смежные вопросы