2004年04月28日 (水)
SOAP::Lite / おたすけマンに感謝!
先週からずーっとなやんでいた、SOAPの問題が解決しました!
おたすけマンこと、ク社時代の先輩から、「Unix版の SOAP::Liteおかしげよ、Win版でためしてみたら?」というアドバイスをもらいました。
なにーと思って、試してみると。キター。うごきました!! Win版で試すなんておもいもしなかったですよ。激しく感謝です。
というわけで、僕が理解した範囲でメモっておきます。
準備
ActivePerlの場合はSOAP::Lite、LWPは初めから入っています。
SSL通信をする場合は Perl 5.8 系の場合は Crypt::SSLeayが必要になります。ActiveSite には無いので、
ppm install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd
DLL をインストールしろといわれるので、ダウンロード先は
/Windows/Win32
を指定。
これで、Windows 上で https な SOAP を行う準備が整いました。
文字型
で、Win上でやってみたら、なにやらいままでとは違うパラメータがちがうとかなんとか、前向きなメッセージがでてきた。
パラメータ名はあってるな。
use SOAP::Lite +trace => 'debug';
で、トレースしてみるとXML で string型 で渡さないとけないと行けない項目が、int型になってるっぽい。
どうも、SOAP::Lite は、数字のみだと int 型にしてしまうっぽい。
しょうがないので、
code => '99999 ',
のように、後ろに半角スペース付けて強引に string型に変更。(ヲイヲイ)
キタ━━━━(゚∀゚)━━━━ッ!!
動きました!やった、先週からずーっと悩んでいたのが解決か!?
んで、サーバに持って行ったら、やっぱり動きませんでした。どうも教えてもらったとおりWSDL から動的に処理しているあたりがあやしげです。
これまた、教えてもらった通りstubmaker.pl つかってスタブを Windows 上で作っておいてそれを UNIX にもってったらうごきました。
stubmaker.pl WSDL_URL
stubmaker.pl で作られた、モジュールを use するだけですね。(もちろんパラメータは渡しますが)簡単です。
これをつかえば、いちいちWSDLを使用しなくてもいいので、速度的にも早いのかな?(未検証)
その後
会社の同僚がちょと上手くいくヤツとの差分を調べてくれて、UNIX版でもパラメータを工夫しまくれば、スタブをWindowsで作成しなくても上手くいくことが分かりました。
思えば、昔 Amazon Web Serviceで遊んでみたときも WSDL つかってたけど、本来であれば、こんな煩雑なデータを定義して渡す必要はなかったんだなぁと思った。(ちょっと後で検証してみます)
バッドノウハウ?
どこが問題なのかおってないのであれだけど、SOAP::Lite 関係で上手くいかないときは Windows で一回ためしてみるのがよいのなかーとか思いました。
やっぱり、これってバッドノウハウ?
SEE ALSO
posted by takefumi
|
この日記へリンク
|
コメント(0)
|
トラックバック(0)

