PerlでSOAPを試す

授業でSOAPの課題が出た.授業用のSOAPサーバのnameというメソッドに自分の名前を渡して結果を確認するというもの.サンプルコードはJavaで何行にも渡ってつらつらと書かれていたのだけれど,それPerlだと2行でできるよ.

use SOAP::Lite;
print SOAP::Lite->proxy(shift)->name(shift)->result, "\n";

終了.これを,

$ perl soap_test http://url.to.soap/ hakobe

とかやって呼び出せばOK.

呼び出し結果ををXMLでみたいときは,

my $client = SOAP::Lite->proxy(shift)->outputxml(1);
print $client->name(shift), "\n";

とやる.

SOAP::LiteはSOAPのサーバも結構らくにかけて,

use strict;
use warnings;
use SOAP::Transport::HTTP;
use Readonly;

Readonly my $PORT => 8080;

my $deamon = SOAP::Transport::HTTP::Daemon
    ->new(LocalPort => $PORT)
    ->dispatch_to('name')
    ->handle();

sub name {
    my ($class, $name) = @_;
    return "Hello, $name !";
}   

とかやるとできた.実行すると,8080ポートからSOAPサーバにアクセスできるようになる.一番はじめに作ったスクリプトでアクセスしてみると,

$ perl soap_msg_test.pl http://localhost:8080 yohei
Hello, yohei !

となる.

いまどきは,XML-RPCのほうがよりLightweightで良いのかもね.ただ,Perlでやると抽象化されて裏でなにやってるかは気にする必要は無いな.

SOAP::Liteのドキュメントを読みながらやったのだけど,量が多くてどこよんでいいかかなり困った.Perlクックブック Volume2にちょっとだけ書いてあったので助かったけど.

Perlクックブック〈VOLUME2〉

Perlクックブック〈VOLUME2〉

  • 作者: トムクリスチャンセン,ネイザントーキントン,Tom Christiansen,Nathan Torkington,Shibuya Perl Mongers,ドキュメントシステム
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2004/09
  • メディア: 単行本
  • 購入: 2人 クリック: 38回
  • この商品を含むブログ (40件) を見る