еще вариант<br><br>$request->headers->as_string<br><br><div class="gmail_quote">2009/4/28 Alex Shatlovsky <span dir="ltr"><<a href="mailto:shatlovsky@gmail.com">shatlovsky@gmail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Привет,<br>
<br>
2009/4/28 Анатолий Шарифулин <<a href="mailto:sharifulin@gmail.com">sharifulin@gmail.com</a>>:<br>
<div class="im">> Так вы длину не пишите.<br>
> Используйте HTTP::Request::Common, он за вас длину посчитает и тип пропишет<br>
> верный и правильный запрос построит. Перед отправкой as_string покажет весь<br>
> запрос.<br>
<br>
</div>Заголовки все равно не все возвращаются:<br>
<br>
$ ./ua.t<br>
# Will access HTTP server at <a href="http://srv:55605/" target="_blank">http://srv:55605/</a><br>
# URL constructed: <a href="http://srv:55605/obj" target="_blank">http://srv:55605/obj</a><br>
>From requestor's view:<br>
POST <a href="http://srv:55605/obj%0AContent-Length" target="_blank">http://srv:55605/obj<br>
Content-Length</a>: 10<br>
Content-Type: application/x-www-form-urlencoded<br>
<br>
domain=qqq<br>
====================<br>
>From respondent's view<br>
<br>
POST /obj HTTP/1.1<br>
Connection: TE, close<br>
Host: srv:55605<br>
TE: deflate,gzip;q=0.3<br>
<div class="im">User-Agent: libwww-perl/5.805<br>
</div>Content-Length: 10<br>
Content-Type: application/x-www-form-urlencoded<br>
<br>
domain=qqq<br>
====================<br>
# URL constructed: <a href="http://srv:55605/quit" target="_blank">http://srv:55605/quit</a><br>
Terminate HTTP server<br>
<br>
<br>
--<br>
<div><div></div><div class="h5"><br>
<br>
><br>
> 2009/4/28 Andrew Kopeyko <<a href="mailto:kaa@zvuki.ru">kaa@zvuki.ru</a>><br>
>><br>
>> Доброе утро, всезнающий all!<br>
>><br>
>> Есть задача - нужно видеть (логировать) все заголовки отправляемого мною<br>
>> POST-запроса.<br>
>><br>
>> Запрос формируется перлом, соответственно начал (по привычке) на LWP, но<br>
>> довольно быстро обломался - до всех заголовков реального запроса не<br>
>> дотягивается даже $request->as_string;<br>
>><br>
>> Вот кусочек кода:<br>
>> --->8---<br>
>> use LWP;<br>
>> use HTTP::Request;<br>
>> my $ua = new LWP::UserAgent;<br>
>> my $request = HTTP::Request->new(POST => $URL);<br>
>> $request->content_type('application/x-www-form-urlencoded');<br>
>> my $content = "domain=qqq";<br>
>> $request->content($content);<br>
>> $Cookies->add_cookie_header( $request );<br>
>> $ua->prepare_request( $request );<br>
>> &debug("POSTing $URL ...");<br>
>> &debug("request_headers:");<br>
>> foreach my $hdr ($ua->default_headers->header_field_names) {<br>
>> print " ".$hdr.": ".$ua->default_headers->header($hdr)."\n";<br>
>> }<br>
>> print $request->as_string();<br>
>> --->8---<br>
>><br>
>> А вот его output:<br>
>> --->8---<br>
>> DEBUG: POSTing <a href="https://www.nic.ru/cgi/na.cgi" target="_blank">https://www.nic.ru/cgi/na.cgi</a> ...<br>
>> DEBUG: request_headers:<br>
>> Accept: text/html, text/plain<br>
>> Accept-Charset: koi8-r<br>
>> Accept-Language: ru,en<br>
>> Referer: <a href="http://www.nic.ru/" target="_blank">http://www.nic.ru/</a><br>
>> User-Agent: Mozilla/4.72 [en] (X11; U; FreeBSD 4.2-BETA i386)<br>
>><br>
>> POST <a href="https://www.nic.ru/cgi/na.cgi" target="_blank">https://www.nic.ru/cgi/na.cgi</a><br>
>> Accept: text/html, text/plain<br>
>> Accept-Charset: koi8-r<br>
>> Accept-Language: ru,en<br>
>> Referer: <a href="http://www.nic.ru/" target="_blank">http://www.nic.ru/</a><br>
>> User-Agent: libwww-perl/5.805<br>
>><br>
>> domain=qqq<br>
>><br>
>> --->8---<br>
>><br>
>> Видно, что в выводе отсутствуют<br>
>> - установленный Content-Type<br>
>> - вычисленный Content-Length<br>
>><br>
>><br>
>> Дело осложняется тем, что запрос идёт на https:// - т.е. on-wire<br>
>> (tcpdump\ethereal) не подсмотреть...<br>
>><br>
>> Каждый раз пробовать на отдельном специальном http-сервере - не дело: мне<br>
>> нужно будет логировать заголовки "боевого" POST-запроса.<br>
>><br>
>><br>
>> Сейчас смотрю в сторону WWW::Curl::Easy. Судя по документации, есть<br>
>> возможность посмотреть заголовки запроса - через установку опции<br>
>> CURLOPT_DEBUGFUNCTION с типом CURLINFO_HEADER_OUT<br>
>> <a href="http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTDEBUGFUNCTION" target="_blank">http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTDEBUGFUNCTION</a><br>
>><br>
>> Но вот как именно это делается - пока непонятно. Ибо перлового примера -<br>
>> не нагуглилось...<br>
>><br>
>> Нашёл только Cи-шный пример:<br>
>> <a href="http://curl.haxx.se/lxr/source/docs/examples/debug.c" target="_blank">http://curl.haxx.se/lxr/source/docs/examples/debug.c</a><br>
>> но моих знаний C и Perl - недостаточно чтобы построить перловый аналог<br>
>> функции my_trace. Увы...<br>
>><br>
>><br>
>> Вот и прошу "помощи зала" - может, кто из вас хорошо знаком с cURL ?<br>
>><br>
>> Пожалуйста, подскажите<br>
>> - как работать с CURLOPT_DEBUGFUNCTION ?<br>
>> - как логировать заголовки отправляемого POST-запроса ?<br>
>><br>
>><br>
>><br>
>> --<br>
>> Best regards,<br>
>> Andrew Kopeyko <<a href="mailto:kaa@zvuki.ru">kaa@zvuki.ru</a>><br>
>><br>
>> --<br>
>> Moscow.pm mailing list<br>
>> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
><br>
><br>
> --<br>
> С уважением,<br>
> Анатолий Шарифулин.<br>
><br>
> --<br>
> Moscow.pm mailing list<br>
> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
><br>
><br>
<br>
<br>
<br>
--<br>
С уважением,<br>
</div></div>А.Н.Шатловский<br>
<div><div></div><div class="h5">--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br>