Так вы длину не пишите. Используйте HTTP::Request::Common, он за вас длину посчитает и тип пропишет верный и правильный запрос построит. Перед отправкой as_string покажет весь запрос.
2009/4/28 Andrew Kopeyko <[email protected]> > Доброе утро, всезнающий 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 <[email protected]> > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- С уважением, Анатолий Шарифулин.
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
