我有两个用Perl编写的CGI脚本,我想在两者之间实现以下通信序列。脚本A向脚本B发送POST请求,然后它应该等待B通过查询数据库来执行某种类型的验证,然后B将成功或失败发送回A以及自定义代码,例如: 1122特定于我的应用程序和A继续执行适当的。这是否可以通过LWP框架实现?
我尝试从A发送POST请求到B,然后使用
在脚本A中等待 while(<STDIN>) {
$response .= $_;
}
直到它收到来自B的回复(另一个POST),但这不起作用A只是忽略SDTIN循环并继续。
毋庸置疑,我对CGI完全陌生,我发现大多数答案都涉及对CGI脚本的简单POST或GET请求,但不是双向通信,其中一方必须等待另一方在验证后做出响应已经发生了。
答案 0 :(得分:3)
您无需执行任何操作即可使脚本等待响应。 LWP默认是同步的。
只需提出请求,然后正常阅读$res->content;
(不是STDIN!)(有关扩展示例,请参阅the documentation)。
如果您正在使用CGI,则不应直接触摸STDIN。理想情况下,您将使用Plack/PSGI,因此您将通过Plack API(或构建在其上的框架)访问所有输入。如果您正在使用遗留代码,那么您可能会使用CGI.pm,它提供了自己的API来读取输入(通过param
)。
毋庸置疑,我对CGI完全陌生,我发现大多数答案都涉及对CGI脚本的简单POST或GET请求,但不是双向通信,其中一方必须等待另一方在验证后做出响应已经发生了。
您 发出简单的POST或GET请求。
A.cgi
A.cgi
向B.cgi
B.cgi
输出回复A.cgi
读取该回复并对其执行某些操作A.cgi
输出回复