Просмотр полной версии : perl & LWP:UserAgent
значет есть проблема.
с помощью модуля LWP::UserAgent надо послать POST запрос. НО! Ответ считывать не надо. то есть послал, и забыл. плевать мол на то что сервер ответит. это возможно?
Если я тебя правильно понял, то в данном случае - нет.
Надо использовать IO::Socket, тк LWP ждет хоть какой-то ответ от сервера или выдает еррор по таймауту.
Developer
07.05.2007, 16:59
Насколько я знаю, сначала идет коннект, потом уже шлется запрос, поэтому тайм-аут действует только для коннекта к серверу.
Не знаю как в PERL, в PHP просто посылался запрос и сразу закрывалось соединения для этого (никаких fgets).
из perldoc LWP::UserAgent:
Get/set the timeout value in seconds. The default timeout() value is 180 seconds, i.e. 3 minutes.
The requests is aborted if no activity on the connection to the server is observed for timeout seconds. This means that the time it takes for the complete transaction and the request() method to actually return might be longer.
бугаг делай
допустм так
my $res = $ua->post('http://forum.web-hack.ru/index.php?act=Login&CODE=01', {'referer' => '', 'UserName' => $login2, 'PassWord' => $password2, 'CookieDate' => 1 })or die 'Bad connect to web-hack.ru';
просто запрос и не требуй чтобы lwp запрашивал инфу в ответ и все будет нормально
ненадо писать типо ->content; ->as_string; и тд.
как раз таки в данном случае, ты запрашиваешь ответ
ты присваиваешь результат $res => скрипт будет ждать пока LWP что-то вернет в $res
а вообще он в любом случае будет ждать, тк LWP всегда возвращает экземпляр HTTP::Response
а content заполняется автоматом, а не при вызове
а тебе не кажется что $res это просто указатель -- и если он автоматом заполняется то попробуй его выведи принтом получишь адрес в оперативе --- еслиб он автоматом заполнялся то накой придумывать content as_string и head -- если полюбому они все есть в переменной??? если даже я неправ можно просто поставить небольшой таймут на соеднение и все
И так по порядку:
1. При print'e получаем: HTTP::Response=HASH(0x28f2a74)link.
Если присмотреться к строке внимательно, ты ты заметишь в ней "HTTP::Response", это означает, что переменная является экземпляром класса HTTP::Response. А HASH(0x28f2a74) показывает тип переменной и ее адрес в таблице переменных перла.
2. Надеюсь эти скриншоты тебе помогут разобраться в сути дела:
http://img513.imageshack.us/img513/3039/perlcw1.th.png (http://img513.imageshack.us/my.php?image=perlcw1.png)http://img59.imageshack.us/img59/5323/perl2zg4.th.png (http://img59.imageshack.us/my.php?image=perl2zg4.png)
ну вот -- а может ты увидил ответ серва из-за того что запросил его через редактор и он его специально его получил??? -- не ты прав -- позырил в фаере трафф на соединение отосланный и полученный -- да выкачивает =)
Так тебя устроит?
http://img63.imageshack.us/img63/6660/perl3sk2.th.png (http://img63.imageshack.us/my.php?image=perl3sk2.png)
ЗЫ: ты прикидываешся чтоли...?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot