# リクエストの生成
my $url = "http://www.test.com/index.php";
my $host = "$url";
my $port = "80";
my $jsessionid = "lwpcookies.txt";
my $ua = new LWP::UserAgent;
my $req = new HTTP::Request POST => "$url";
$req->content_type('application/x-www-form-urlencoded');
$req->content("name=ほんげら&comment=クックロビン");
my $cookie_jar = HTTP::Cookies->new;
$cookie_jar->set_cookie(undef, "JSESSIONID", $jsessionid, "/", $host, $port);
$ua->cookie_jar($cookie_jar);
my $res = $ua->request($req);
if ($res->is_success) {
print "SUCCESS\n";
my $http = $res->content;
print "\n${http}\n";
} else {
print "FAILED\n";
}
クッキーと一緒にPOSTで投げるプログラムなのですが、どこがおかしいか指摘していただけないでしょうか?useの宣言はきちんとしてあります。
とりあえず、こんな風に書き換えてみました。
#! /usr/bin/perl use strict; use CGI; use CGI::Carp qw(fatalsToBrowser croak); use LWP::UserAgent; use HTTP::Request; use HTTP::Cookies; my $q = new CGI; my $url = 'http://www.test.com/index.php'; my $port = 80; my $jsessionid = 'lwpcookies.txt'; my $ua = new LWP::UserAgent; my $req = HTTP::Request->new( POST => $url ); $req->content_type('application/x-www-form-urlencoded'); $req->content('name=ほんげら&comment=クックロビン'); my $cookie_jar = HTTP::Cookies->new; $cookie_jar->set_cookie(undef, 'JSESSIONID', $jsessionid, '/', $url, $port); $ua->cookie_jar($cookie_jar); my $res = $ua->request($req); print $q->header('-Content-Type' => 'text/html', '-charset' => 'UTF-8', ); if ($res->is_success) { print "SUCCESS\n"; my $http = $res->content; print "\n$http\n"; } else { print "FAILED\n"; }
CGIとしてブラウザ上で実行すると仮定してですが、意図したメッセージが表示されるようにするには、HTTPヘッダを付加してやる必要があるので、
use CGI; my $q = new CGI; print $q->header('-Content-Type' => 'text/html', '-charset' => 'UTF-8', );
を追加してみました。(UTF8の場合。Shift-JISでしたら、このあたりも変えないと)
あと、
print "\n${http}\n";
は
print "\n$http\n";
かなと思うのですが如何でしょうか。
ただ、上のソースは文法チェックのみなので、実際にうまくいくかどうかは別問題です…また状況が分かれば投稿したいと思います。
ほうが効果的な回答をもらいやすいと思いますよ。
接続時にウェブサーバに残ったログが分かれば更にGoodです。
非常に遅くなりましてすいません!
返信をおくったつもりなのが、書き込まれていませんでした、、、。
結果はうまくいきました!ありがとうございました。