无法从Perl执行POST请求

无法从Perl执行POST请求,perl,google-app-engine,Perl,Google App Engine,我有一个正常的网页在互联网上有这种布局 <form method="POST"> <textarea rows="30" cols="70" name="spytext" id="spytext"></textarea> <input type="submit" value="send"> </form> 现在我的Perl代码看起来像这样 my %Fields = ("spytext" => "Will Bontrager");

我有一个正常的网页在互联网上有这种布局

<form method="POST">
<textarea rows="30" cols="70" name="spytext" id="spytext"></textarea>
<input type="submit" value="send">
</form>
现在我的Perl代码看起来像这样

my %Fields = ("spytext" => "Will Bontrager");

use LWP::UserAgent;
use HTTP::Request::Common;

my $Browser = new LWP::UserAgent;

push @{$Browser->requests_redirectable}, 'POST';

my $Page = $Browser->request(POST "http://myGAEFictiveLink.appspot.com/spypage",\%Fields);

if ($Page->is_success) { print $Page->content; }
else { print "\nUnsuccessful " . $Page->message; }
因此,在我的“spypage”上,我用一个值发布了这个名为“spytext”的字段,并且我希望在浏览器中发布后检索通常会得到的内容(带有消息的HTML段落)

运行脚本后,它被证明是一篇成功的文章,但显示的页面内容正是初始页面“spypage”,而不是通常在页面界面中发布后出现的另一个页面

所以我猜它没有真正发布,或者它没有发布在我的目标页面上


如何强制Perl在该页面上发布?

我必须在我的
REST
控制台中查看它才能找到答案,但是您的页面需要
HTTPS
,并且您在
Perl
脚本中通过
HTTP
发送,因此您将重定向(302)到安全版本,这就像
GET
请求一样。将脚本中的
URL
更改为使用HTTPS,它将按如下所示工作

#!/usr/bin/perl

use strict;
use warnings;
use LWP::UserAgent;


my %Fields  = (
        spytext => 'Will Bontrager',
    );

my $url = 'http://myGAEFictiveLink.appspot.com/spypage';


my $ua = LWP::UserAgent->new();
my $res = $ua->post( $url, %Fields );

if ($res->is_success) {
    # If successfully (200 status code) do this
    my $content  = $res->decoded_content();
    print $content . "\n";

} else {
    print "Status Code: " . $res->status_line . "\n";
    print "Final URL: " . $res->request()->uri() . "\n";
}
响应

<p>Okay, now expect for an email</p>
好的,现在期待一封电子邮件


要清楚:您有一个
html
页面,该页面将发布到本地(在同一个web根目录中)
perl
脚本,然后重定向到GAE页面?我在本地运行一个perl脚本,用perl尝试发布到internet上的一个页面(恰好是我的页面),然后(用perl)在执行post后检索结果。它给了我相同的页面,就像没有帖子发生一样。是否可以提供您发布到的链接以进行故障排除?我很难理解您的问题。我已经编辑了它,我希望它仍然能表达你的意图。您应该始终在每个Perl程序的顶部
使用strict
使用warnings
,最好遵循中的建议,以便习惯编写Perl的人能够理解您所编写的内容。以
my$Page
开头的行试图调用不存在的子例程
POST
。你应该先把它修好谢谢你。。多么愚蠢的错误。。我能请你帮个忙吗。。请从您的代码中删除我的链接,即带有appspot的链接。感谢you@Madrugada,我删除了它,但请注意,我最初询问的原因是,
受信任的用户(>20000分)可以看到删除的评论、问题和答案,因此如果它是敏感的,您不应该共享它,而应该共享替换代码。从我在这个网站上的经验来看,虽然人们本质上不是恶意的,所以我倾向于相信他们有任何面向公众的链接,等等。。。很高兴我能帮忙。谢谢你的建议。这不是一个敏感的页面,但我也不喜欢随机的人(访问者)在上面做测试。我也信任这个网站的超级用户。
<p>Okay, now expect for an email</p>