Так вы длину не пишите.<br>Используйте HTTP::Request::Common, он за вас длину посчитает и тип пропишет верный и правильный запрос построит. Перед отправкой as_string покажет весь запрос.<br><br><div class="gmail_quote">2009/4/28 Andrew Kopeyko <span dir="ltr"><<a href="mailto:kaa@zvuki.ru">kaa@zvuki.ru</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;">Доброе утро, всезнающий all!<br>
<br>
Есть задача - нужно видеть (логировать) все заголовки отправляемого мною POST-запроса.<br>
<br>
Запрос формируется перлом, соответственно начал (по привычке) на LWP, но довольно быстро обломался - до всех заголовков реального запроса не дотягивается даже $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 (tcpdump\ethereal) не подсмотреть...<br>
<br>
Каждый раз пробовать на отдельном специальном http-сервере - не дело: мне нужно будет логировать заголовки "боевого" POST-запроса.<br>
<br>
<br>
Сейчас смотрю в сторону WWW::Curl::Easy. Судя по документации, есть возможность посмотреть заголовки запроса - через установку опции 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>
Нашёл только 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 - недостаточно чтобы построить перловый аналог функции 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" target="_blank">kaa@zvuki.ru</a>><br><font color="#888888">
<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>С уважением,<br> Анатолий Шарифулин.<br>