[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