Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   perl & LWP:UserAgent (https://forum.antichat.xyz/showthread.php?t=39708)

x-treem 07.05.2007 14:54

perl & LWP:UserAgent
 
значет есть проблема.
с помощью модуля LWP::UserAgent надо послать POST запрос. НО! Ответ считывать не надо. то есть послал, и забыл. плевать мол на то что сервер ответит. это возможно?

KSURi 07.05.2007 16:16

Если я тебя правильно понял, то в данном случае - нет.
Надо использовать IO::Socket, тк LWP ждет хоть какой-то ответ от сервера или выдает еррор по таймауту.

x-treem 07.05.2007 16:18

очень жаль...
спасибо

Developer 07.05.2007 16:59

Насколько я знаю, сначала идет коннект, потом уже шлется запрос, поэтому тайм-аут действует только для коннекта к серверу.

Не знаю как в PERL, в PHP просто посылался запрос и сразу закрывалось соединения для этого (никаких fgets).

KSURi 07.05.2007 17:12

из 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.

genom-- 07.05.2007 20:35

бугаг делай

допустм так

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; и тд.

KSURi 07.05.2007 20:51

как раз таки в данном случае, ты запрашиваешь ответ
ты присваиваешь результат $res => скрипт будет ждать пока LWP что-то вернет в $res
а вообще он в любом случае будет ждать, тк LWP всегда возвращает экземпляр HTTP::Response

а content заполняется автоматом, а не при вызове

genom-- 07.05.2007 20:56

а тебе не кажется что $res это просто указатель -- и если он автоматом заполняется то попробуй его выведи принтом получишь адрес в оперативе --- еслиб он автоматом заполнялся то накой придумывать content as_string и head -- если полюбому они все есть в переменной??? если даже я неправ можно просто поставить небольшой таймут на соеднение и все

KSURi 07.05.2007 21:29

И так по порядку:

1. При print'e получаем: HTTP::Response=HASH(0x28f2a74)link.
Если присмотреться к строке внимательно, ты ты заметишь в ней "HTTP::Response", это означает, что переменная является экземпляром класса HTTP::Response. А HASH(0x28f2a74) показывает тип переменной и ее адрес в таблице переменных перла.

2. Надеюсь эти скриншоты тебе помогут разобраться в сути дела:
http://img513.imageshack.us/img513/3039/perlcw1.th.pnghttp://img59.imageshack.us/img59/5323/perl2zg4.th.png

genom-- 07.05.2007 21:39

ну вот -- а может ты увидил ответ серва из-за того что запросил его через редактор и он его специально его получил??? -- не ты прав -- позырил в фаере трафф на соединение отосланный и полученный -- да выкачивает =)


Время: 05:38