- PR -

Perl+SOAP::Liteで複数Responseが取得できない

1
投稿者投稿内容
Pooh
会議室デビュー日: 2004/04/06
投稿数: 2
投稿日時: 2004-04-06 17:07
初めて投稿します。よろしくお願いします。
以下の環境でSOAP接続を行っています。

WindowsXP
ActivePerl5.6.1

レスポンスで複数のタグが帰ってくる場合に一番下の項目しか取得できません。
(以下、SOAPのレスポンスのサンプルです。)

<ProductInfo>
  :
</ProductInfo>
<ProductInfo>
:
</ProductInfo>
<ProductInfo>
<id>123</id>
<title>test</title>
</ProductInfo>

上記のようなタグがレスポンスで帰ってきた場合、
use SOAP::Lite +trace => 'debug';で
標準出力を行うと、すべての<ProductInfo>タグが表示されます。

しかし、Data::Dumperを使用して結果を表示した場合、一番下の<ProductInfo>タグしか表示されません。

use Data::Dumper;
  
   :
my $service = SOAP::Lite -> service($wsdl);
my $result = $service -> GetProductInfo( $commonTag, $ProductInfoTag );
print Dumper($result);

トレースでは表示されるため、サーバ側の問題とも思えないのですが。。
いろいろと試しましたが、全く分かりません。
WSDLも、Amazonのサービスをベースに作り直しましたが、状況は変わりませんでした。
何が問題なのでしょうか。
対処方法をご存知の方がいらっしゃいましたら、ご教示のほど、よろしくお願いいたします。


[ メッセージ編集済み 編集者: たなか 編集日時 2004-04-06 17:48 ]
Pooh
会議室デビュー日: 2004/04/06
投稿数: 2
投稿日時: 2004-04-13 19:57
少し、追記させていただきます。

ここの会議室で議論されるのは、やっぱり、Javaが多いですよね。
私の扱っているサービスも、Javaではすでにいくつかの実績があり、そのため、他の言語での接続は考えていませんでした。
しかし、WEBサービスを利用しようとするユーザーは、「少ない工数で」「簡単に」サービスを利用したい、と思っており、perlやPHPのサイトから弊社のサービスに接続したいという要望が多くなってきました。

Javaで動作するので、、と甘く考えていたら、perlで接続テストをした際に、WSDLに修正の必要があることが分かりました。
修正をして接続はできるようになりましたが、まだ、上記の不具合があります。。

このように多言語のクライアント向けのWEBサービスを作成された方で、言語によって対応が必要となったことがあれば教えていただきたいのです。

私の場合は、Javaの場合、WSDLファイルのbindingタグの<soap:body..>タグでnameSpaceを省略していましたが、perlの場合、ここが抜けているとうまくいきませんでした。

<binding name="serviceSoap" type="type:service">
<soap:binding transport="http://schemas..." style="document" />
<operation name="GetProductInfo">
<soap:operation soapAction="" style="document" />
<input>
<soap:body use="encoded" encodingStyle="http://..." namespace="ここ"/>
</input>
:

他、情報をお持ちの方がいらっしゃいましたら、是非、ご提供いただければと思います。
私の方でも何か見つけたら、また、アップしていきたいと思います。
よろしくお願いします。


[ メッセージ編集済み 編集者: たなか 編集日時 2004-04-13 20:00 ]

[ メッセージ編集済み 編集者: たなか 編集日時 2004-04-13 20:05 ]
1

スキルアップ/キャリアアップ(JOB@IT)