1

我有两个脚本在服务器上执行不同的任务。一个是用 Perl (.cgi) 编写的,另一个是用 PHP 编写的。

我正在尝试通过执行以下操作从 perl CGI 脚本发出请求:

$ua = LWP::UserAgent->new;
$ua->agent("$0/0.1 " . $ua->agent);
$ua->timeout(30);

$queryStr = (xxxMaskedxxx);
$request = HTTP::Request->new('GET', $queryStr);
$response = $ua->request($request);
if ($response->is_success)
{
        $search = strpos($res->content, "not");
        if($search==true)
        { return -1; }
}

我尝试了两种方法从 PHP 发回结果:

这个:

HttpResponse::setCache(true);
HttpResponse::setContentType('text/html');
if (!$result)
        HttpResponse::setData("<html>Message not delivered</html>");
else
        HttpResponse::setData("<html>Message successfully delivered</html>");
HttpResponse::send();

和这个:

echo "Content-type: text/html\n\n";
if (!$result)
      echo 'Message not delivered' . PHP_EOL;
else
      echo 'Message successfully delivered' . PHP_EOL;

但是$response->is_success两种情况都返回false?当我尝试打印响应时,我得到了这个:

响应是 HTTP::Response=HASH(0x97a8b34)

我做错了什么?

这两个脚本也并排坐着。他们之间有没有更好的沟通方式?

4

2 回答 2

1

Perlcli.php使用命令行参数调用脚本,

#!/usr/bin/perl

my $content = `/usr/bin/php cli.php xxxMaskedxxx`;

print $content;

cli.php回显收到的论点

<?php

// output first argument from command line
print $argv[1];
于 2013-05-19T12:37:54.990 回答
1

但是 $response->is_success 对于这两种情况都返回 false 吗?

在这两种情况下,您都会输出默认的HTTP 状态,即“200 OK”。您需要输出一个指示失败的状态码is_success

当我尝试打印响应时,我得到了这个

那是一个HTTP::Response对象。您需要检查$response->decoded_content是否要从中获取文本。

于 2013-05-19T13:08:46.093 回答