[Rio-pm] obtendo dados do HTTP header atraves de proxy
Nicole Scherer
bionica2007-perl em yahoo.com
Sexta Março 8 11:58:08 PST 2013
Oi Mongers,
venho humildemente consultar o vasto conhecimento de vocês em prol da pesquisa científica.
Preciso consultar o tamanho de um arquivo em um servidor ftp, antes de decidir se o arquivo deverá ou não ser baixado.
Eu estava usando o LWP::Simple::head($url) para isto, e estava funcionando bem, até eu ter que usá-lo através de um proxy.
O que acontece é o seguinte, usando sem proxy, eu consigo acessar as informações sobre tamanho, formato, codificação, etc,
my $downloadfile = "ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/all_est.txt.gz";
my ($content_type, $document_length, $modified_time, $expires, $server) = LWP::Simple::head($downloadfile);
--- ou
if (my $res = LWP::Simple::head($downloadfile)) {
print "$downloadfile ok\n"; ### debug
p($res->{_headers});
} else {
print "$downloadfile not available\n"; ### debug
}
--- e quando uso
use LWP::Simple qw($ua head);
$ua->proxy([qw(http ftp wais)], 'http://10.46.10.19:3129');
para definir o proxy, ele não retorna estas informações.
Se eu mandar imprimir $res->{_headers}, tenho isso:
--- rodando sem proxy
HTTP::Headers {
public methods (38) : as_string, authorization, authorization_basic, clear, client_date, content_encoding, content_is_html, content_is_text, content_is_xhtml, content_is_xml, content_language, content_length, content_type, content_type_charset, date, expires, from, header, header_field_names, if_modified_since, if_unmodified_since, init_header, last_modified, new, proxy_authenticate, proxy_authorization, proxy_authorization_basic, push_header, referer, referrer, remove_content_headers, remove_header, scan, server, title, user_agent, warning, www_authenticate
private methods (5) : _basic_auth, _date_header, _header, _process_newline, _sorted_field_names
internals: {
client-date => "Fri, 08 Mar 2013 19:33:58 GMT",
client-request-num => 1,
content-encoding => "gzip",
content-length => 14169205,
content-type => "text/plain",
last-modified => "Mon, 14 Mar 2011 16:52:05 GMT",
server => "FTP Server"
}
}
--- com proxyHTTP::Headers {
public methods (38) : as_string, authorization, authorization_basic, clear, client_date, content_encoding, content_is_html, content_is_text, content_is_xhtml, content_is_xml, content_language, content_length, content_type, content_type_charset, date, expires, from, header, header_field_names, if_modified_since, if_unmodified_since, init_header, last_modified, new, proxy_authenticate, proxy_authorization, proxy_authorization_basic, push_header, referer, referrer, remove_content_headers, remove_header, scan, server, title, user_agent, warning, www_authenticate
private methods (5) : _basic_auth, _date_header, _header, _process_newline, _sorted_field_names
internals: {
client-date => "Fri, 08 Mar 2013 19:36:13 GMT",
client-peer => "10.46.10.19:3129",
client-response-num => 1,
connection => "close",
date => "Fri, 08 Mar 2013 19:35:52 GMT"
}
}
Ele simplesmente não cria/recebe content-encoding, content-length, content-type, last-modified e server.
Só o que eu preciso mesmo é ocontent-length.
By the way, o LWP::UserAgent head() não me informa o tamanho do arquivo. Pelo menos não nos meus testes.
Vocês conhecem alguma outra maneira de obter a informação de tamanho do arquivo sem ter que baixá-lo?
Acessando o directory listing também não dá, porque através do proxy, o formato que ele retorna varia em cada sistema (pelo menos foi o que eu observei. me corrijam se eu estiver errada).
Obrigada!
Abraços,
Nicole
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20130308/c16dea41/attachment.html>
Mais detalhes sobre a lista de discussão Rio-pm