我有两个脚本在服务器上执行不同的任务。一个用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?当我尝试打印响应时,我得到了这个:
response is HTTP::Response=HASH(0x97a8b34)
我做错了什么?
这两个脚本并排坐在一起。有没有更好的方式来沟通?
答案 0 :(得分:1)
Perl使用命令行参数调用cli.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];
答案 1 :(得分:1)
但$ response-&gt; is_success在两种情况下都返回false?
在这两种情况下,您输出的默认值为HTTP status,即“200 OK”。您需要output a status code表示is_success
失败。
当我尝试打印响应时,我得到了这个
那是HTTP::Response
object。如果你想从中获取文本,你需要检查$response->decoded_content
。