SOAP::Liteの相互運用性について
SOAP::LiteはSOAP文書がRPC/Encodedでないと駄目なようです(回避方法はあるようです。後述)。
.NETのデフォルトがDocument/Literalなので、デフォルトではSOAP::Liteから.NETで作成したWebサービスは呼び出せません。
Webサービス(asmx)のクラスの属性を修正することによって、RPC/Encodedに変更は可能です(System.Web.Services.Protocols.SoapRpcService() を設定することにより、RPC/Encodedになる)。
Document/Literal版とRPC/Encoded版の2つのWSDLを用意する方が親切かもしれません。
ちなみにWebサービス作成時、
.NETのデフォルトはDocument/Literal
JavaのデフォルトはRPC/Encoded
です。
クライアント側はどちらもコード上意識しなくて対応しています。
もうちょっと調べてみると、SOAP::LiteでもDocument/Literal
のSOAP文書が作れるようです。以下参照 。でもちょっと面倒くさそうです。
・How to Call a .NET-based Web Service Using the SOAP::Lite Perl Library