On Tue, 28 Apr 2009, Анатолий Шарифулин wrote:
Так вы длину не пишите.
А я и не пишу.
Используйте 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
--
С уважением,
Анатолий Шарифулин.
--
Best regards,
Andrew Kopeyko <[email protected]>
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org