[Moscow.pm] подскажите по WWW::Curl::Easy

Анатолий Шарифулин sharifulin на gmail.com
Пн Апр 27 23:49:31 PDT 2009


Так вы длину не пишите.
Используйте HTTP::Request::Common, он за вас длину посчитает и тип пропишет
верный и правильный запрос построит. Перед отправкой as_string  покажет весь
запрос.

2009/4/28 Andrew Kopeyko <kaa на zvuki.ru>

> Доброе утро, всезнающий all!
>
> Есть задача - нужно видеть (логировать) все заголовки отправляемого мною
> POST-запроса.
>
> Запрос формируется перлом, соответственно начал (по привычке) на LWP, но
> довольно быстро обломался - до всех заголовков реального запроса не
> дотягивается даже $request->as_string;
>
> Вот кусочек кода:
> --->8---
> use LWP;
> use HTTP::Request;
> my $ua = new LWP::UserAgent;
> my $request = HTTP::Request->new(POST => $URL);
> $request->content_type('application/x-www-form-urlencoded');
> my $content = "domain=qqq";
> $request->content($content);
> $Cookies->add_cookie_header( $request );
> $ua->prepare_request( $request );
> &debug("POSTing $URL ...");
> &debug("request_headers:");
> foreach my $hdr ($ua->default_headers->header_field_names) {
>    print "  ".$hdr.": ".$ua->default_headers->header($hdr)."\n";
> }
> print $request->as_string();
> --->8---
>
> А вот его output:
> --->8---
> DEBUG: POSTing https://www.nic.ru/cgi/na.cgi ...
> DEBUG: request_headers:
>  Accept: text/html, text/plain
>  Accept-Charset: koi8-r
>  Accept-Language: ru,en
>  Referer: http://www.nic.ru/
>  User-Agent: Mozilla/4.72 [en] (X11; U; FreeBSD 4.2-BETA i386)
>
> POST https://www.nic.ru/cgi/na.cgi
> Accept: text/html, text/plain
> Accept-Charset: koi8-r
> Accept-Language: ru,en
> Referer: http://www.nic.ru/
> User-Agent: libwww-perl/5.805
>
> domain=qqq
>
> --->8---
>
> Видно, что в выводе отсутствуют
> - установленный Content-Type
> - вычисленный Content-Length
>
>
> Дело осложняется тем, что запрос идёт на https:// - т.е. on-wire
> (tcpdump\ethereal) не подсмотреть...
>
> Каждый раз пробовать на отдельном специальном http-сервере - не дело: мне
> нужно будет логировать заголовки "боевого" POST-запроса.
>
>
> Сейчас смотрю в сторону WWW::Curl::Easy. Судя по документации, есть
> возможность посмотреть заголовки запроса - через установку опции
> CURLOPT_DEBUGFUNCTION с типом CURLINFO_HEADER_OUT
> http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTDEBUGFUNCTION
>
> Но вот как именно это делается - пока непонятно. Ибо перлового примера - не
> нагуглилось...
>
> Нашёл только Cи-шный пример:
>  http://curl.haxx.se/lxr/source/docs/examples/debug.c
> но моих знаний C и Perl - недостаточно чтобы построить перловый аналог
> функции my_trace. Увы...
>
>
> Вот и прошу "помощи зала" - может, кто из вас хорошо знаком с cURL ?
>
> Пожалуйста, подскажите
> - как работать с CURLOPT_DEBUGFUNCTION ?
> - как логировать заголовки отправляемого POST-запроса ?
>
>
>
> --
> Best regards,
> Andrew Kopeyko <kaa на zvuki.ru>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
С уважением,
Анатолий Шарифулин.
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20090428/53e54bc5/attachment.html>


Подробная информация о списке рассылки Moscow-pm