Как я могу переслать информацию на другой сайт и получить ответ на Perl? - PullRequest
2 голосов
/ 18 февраля 2010

В Perl-скрипте (с Ubuntu) я хотел бы сделать что-то вроде

    use Blah;
    ...
    ...
    my $response = 
       &Blah::Fetch($URL, {'method'=>'POST', 'parameters' => \%params});

, которое я написал для удобства, чтобы оно выглядело как вызов ajax Prototype.js, но, очевидно, мымы используем Perl, а не Javascript, мы находимся на сервере, а не в браузере, и вызывающая сторона хочет заблокировать, пока мы не получим ответ или тайм-аут с удаленного сервера.В случае ошибки сервера или тайм-аута значение ($ response) должно быть ложным.Если есть способ получить статус HTTP, это хорошо, но достаточно знать, что запрос не выполнен.Это должно быть в состоянии сделать либо GET, либо POST.

Я знаю, что могу сделать это, используя system и wget, но это клудж.

Как лучше всего выполнить эту задачу в Perl?

Есть ли интерфейс Perl, который хорош и опрятен?

Ответы [ 2 ]

4 голосов
/ 18 февраля 2010

Методы de facto с LWP и WWW: Механизируют для передачи запроса.Эти библиотеки часто включаются в пакеты Perl, но в остальном доступны через CPAN . CGI.pm - самый простой модуль для обработки самых простых веб-запросов.

Обучающие программы для обоих распространены, попробуйте http://perl.com/, http://PerlMonks.org/ http://perldoc.perl.org/ среди других.LWP также предлагает LWP :: Simple, если ваши потребности являются базовыми.

4 голосов
/ 18 февраля 2010

Вы можете использовать HTTP :: Запрос

use HTTP::Request::Common qw(POST); 
use LWP::UserAgent; 

$ua = LWP::UserAgent->new; 
$ua->timeout(3); 

my $req = (POST 'http://stackoverflow.com',  
["param1" => $var1, 
"param2" => $var2]); 

$response = $ua->request($req); 
$content = $response->content; 

exit;

Элементы ответа см. Здесь: http://kobesearch.cpan.org/htdocs/libwww-perl/HTTP/Request.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...