Алексей Александров <[email protected]> писал(а) в своём письме Mon, 28 Oct 2013 16:24:27 +0200:

| А может существует способ при котором можно было бы управлять количество
| байт скачиваемого контента,

Можно так сделать  LWP::UserAgent->max_size($bytes)
"Get/set the size limit for response content."

Пробовал в первую очередь.
Нет, это вообще --- ерунда и
правильно, надежно не работает.

27 октября 2013 г., 11:44 пользователь Alessandro Gorohovski <
[email protected]> написал:

Mons Anderson <[email protected]> писал(а) в своём письме Sun, 27 Oct 2013
01:30:14 +0300:


On 26.10.2013, at 23:58, Alessandro Gorohovski <[email protected]>
wrote:

 Уважаемое сообщество,
Добрый вечер!

Подскажите,
можно ли надежно и как определить размер (объем)
предполагаемого к скачиванию контента
(например, html-страницы) без загрузки всей страницы.


Я сейчас пользуюсь

my $agent = LWP::UserAgent->new;

my $request = HTTP::Request->new( GET => $url );
$request->header('Accept' => 'text/html');

my $response = $agent->request( $request );


В этом месте вы уже получили весь ответ целиком.


Согласен.


 $response->is_success || print FILE_ERR "$id\t$url:\t",
$response->message, "\n";

И далее парсим
$response->headers_as_string

на предмет 'Content-Length'

Но, к сожалению удручает то, что не всегда заголовок скачиваемой страницы
содержит поле  'Content-Length'
:(



Если content-length нет, то значит там ответ transfer-encoding: chunked.
а это, в свою очередь, означает, то вы не можете заранее узнать какой
длины будет ответ, пока не считаете его целиком.


Печально.
А может существует способ при котором можно было бы управлять количество
байт скачиваемого контента, например, загрузив не более 20 kb, прекращать
прием данных
(разорвать соединение принудительно)
?

--
ANG

--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org






--
ANG
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить