Perl で HTTPS を利用した POST

user-pic
0
PHP で SSL 越しの POST ができない、というドキュメントがちらほら見られたので、Perl でも障害になりうる場所かな、とか思っていたら見事にハマる。

ここで言う POST は、HTML の submit ボタンを押下して POST 、という流れではなく、スクリプトを実行すると、ウェブサーバへパラメータが POST されるというもの。
つまりトリガーが違うのね。
HTTP だと Perl の Socket:: というライブラリを利用することで可能だったのだが、HTTPS だと上手く行かなかった。サーバから返されるエラーメッセージには、クライアントが SSL に対応していないとのこと。

なので LWPHTTP を使うこととなった。



use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw(POST);
$ss = "パラメータだこの野郎!!";
my $url = 'https://www.example.jp/hoge.php';
my %formdata;
$formdata{'ss'} = $ss;
my $request = POST($url,[%formdata]);
$request->init_header('User-Agent' => 'Linux');
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
print $res->as_string;
exit;



こいつを実行すると、https://www.example.jp/hoge.php にパラメータが POST される。
PHP の場合は $_POST["ss"] で "パラメータだこの野郎!!" が参照できる。

# これで SSL 通信ができない場合には
補足を参照。

トラックバック(0)

トラックバックURL: http://www.otamu.com/cgi/mt-tb.cgi/13

このブログ記事について

このページは、おたむが2007年9月24日 23:34に書いたブログ記事です。

ひとつ前のブログ記事は「RedHat el4 に PHP5.2.4 をソースインストール with PostgreSQL8.2.5」です。

次のブログ記事は「Perl で HTTPS を利用した POST の補足」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。