perl で XMLRPC

仕事で使う機会があったので調べてみた。目的はクライアント用途だけ。

  • Frontier-RPC

かなり古い。送信時はperlの内部表現を考慮していないため、perl5.8では
データを渡す時点で、Encode::encodeを掛けた後のデータである必要がある。
受信時はXML::Parserがencodingに従って透過的に変換するので、内部表現
に変換済みのデータが格納される。

  • XMLRPC::Lite

それなりに新しい、SOAPモジュールの一部。他モジュールの依存が結構あるので
素のperl環境に入れるのは結構面倒かも。
内部表現は Wide character in ... でおなじみのUTF8フラグエラー。
動作上は特に問題なさそうだが、通信にUTF-8以外のencodingを使おうとするとNGな模様。

CPANで見つけた。内部表現で変数を渡すと以下のエラーを吐いて終わる。
バイト列で渡すと動くけど今時のモジュールとしてはあんまり嬉しくない。
Content-Length header value was wrong

  • XMLRPC::PurePerl

CPANで見つけた。そもそもencoding指定できない。


意外に内部表現のまま渡せるモジュールは無いと云うことが解った。
今回は通信時の文字コードEUC-JPにしろという制約があったので、結局
振り出しに戻ってFrontierを使うことにした。
どうせこれは更新される見込み無いし適当に手を加えて直すのが吉かも。