2012-01-19 4 views
0

Делаю запрос через urllib2, что возвращающийся со следующими заголовками:Определение длины содержимого с помощью urllib2

>>> dict(response.info()) 
{'expires': 'Wed, 31 Dec 1969 19:00:00 EST, Wed, 31 Dec 1969 19:00:00 EST', 'server': 'Apache-Coyote/1.1, Apache-Coyote/1.1', 'connection': 'close', 'pragma': 'No-cache, No-cache', 'cache-control': 'no-cache, no-cache', 'date': 'Thu, 19 Jan 2012 20:16:00 GMT', 'content-type': 'audio/mpeg'} 

Как я понимаю, так как «соединение: закрыть», то запрос будет сохраняйте потоковое воспроизведение до тех пор, пока удаленный хост не завершится, поэтому Content-Length не будет установлен. Кажется, я должен уметь определять длину содержимого, как-то анализируя объект ответа, но я не могу понять, как это сделать. Какие-либо предложения?

ответ

3

Я думаю, вам нужно будет позвонить read() в ответ, чтобы прочитать его в строке, а затем вызвать len() на строку.

data = response.read() 
length = len(data) 
+0

Я предположил, что это даст мне длину всего запроса (включая заголовки), и я думал, что Content-Length включает только тело. Это неправильно? – andyashton

+0

Согласно документам на странице http://docs.python.org/library/httplib.html#httplib.HTTPResponse.read, 'read()' считывает тело ответа. –

+0

Yup, я только что попробовал; 'read()' возвращает тело ответа, поэтому вы можете использовать его для поиска Content-Length. –

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