我在互联网上有一个具有这种布局的普通页面
<form method="POST">
<textarea rows="30" cols="70" name="spytext" id="spytext"></textarea>
<input type="submit" value="send">
</form>
我正在尝试使用Perl从localhost发布此页面。
首先我获得了状态302 Found
,然后我将以下行添加到浏览器中,以便遵循任何重定向:
push @{$browser->requests_redirectable}, 'POST';
现在我的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; }
因此,在我的&#34; spypage&#34;我发布了这个名为&#34; spytext&#34;的字段。有价值的,我期望在浏览器中发布之后检索我通常得到的内容(带有消息的HTML段落)。
运行脚本后,它被证明是一个成功的POST,但显示的页面内容正是初始页面&#34; spypage&#34;而不是另一个页面,通常在页面界面中进行POST后。
所以我猜它没有真正发布,或者它没有发布在我的目标页面上。
如何强制Perl在该页面上发帖?
答案 0 :(得分:1)
我必须在我的REST
控制台中查看它,但您的网页需要HTTPS
,而您在HTTP
脚本中通过perl
发送,您正在重定向(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";
}
<强> RESPONSE 强>
<p>Okay, now expect for an email</p>