отправка данных zlib compress на сервер с помощью POST - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу отправить сжатые zlib данные файла на сервер, используя запрос POST. Ниже приведен код, который я пытаюсь использовать

orig = open('fileName', 'r').read()
comp = zlib.compress(orig, 9)

req = Request(url, comp)
urlopen(req)

Но я получаю следующую ошибку UnicodeDecodeError: 'utf8' codec can't decode byte 0x85 in position 2: invalid start byte

Я пытался следовать comp.encode('utf-8'), но это также не работает. Я получаю то же самое UnicodeDecodeError в некоторой позиции. Как я могу решить мою проблему?

1 Ответ

0 голосов
/ 30 апреля 2018

Документы для urllib2.Request data состояние параметра:

данные должны быть буфером в стандартном формате application / x-www-form-urlencoded.

Вы можете кодировать свой буфер, используя urllib.quote :

>>> orig = 'aaaaabbbccddxddaaabb'
>>> comp = zlib.compress(orig, 9)
>>> comp
'x\xdaKL\x04\x82\xa4\xa4\xa4\xe4\xe4\x94\x94\x8a\x94\x140\x07\x00Q\x19\x07\xc1'
>>> quoted = quote(comp)
>>> quoted
'x%DAKL%04%82%A4%A4%A4%E4%E4%94%94%8A%94%140%07%00Q%19%07%C1'
>>> req = Request('http://example.com', quoted)
...