[kansaipm] SOAP::Lite で encodingStyle を指定する方法は?

mishima at momo.so-net.ne.jp mishima at momo.so-net.ne.jp
Fri Jan 3 19:10:49 CST 2003


三嶋@難波です。

From: mishima at momo.so-net.ne.jp
Subject: Re: [kansaipm] SOAP::Lite で encodingStyle を指定する方法は?
Date: Sat, 04 Jan 2003 09:50:59 +0900 (LMT)

> すごいですね。うまく動きました。

と書きましたが、実は途中で落ちてました。
端末画面に表示された結果をよくよく見ると、
返された結果を解釈できずに落ちていたようです。

---------------- <snip> ----------------
Unrecognized/unsupported value of encodingStyle attribute 'http://xml.apache.org/xml-soap/literalxml'
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope ...>
<SOAP-ENV:Body>
<ns1:getAllListingsResponse ...>
<return>
...ここに、返されたXMLの内容がどばーっと...
</return>
</ns1:getAllListingsResponse ...>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
 at /cygdrive/d/home/mishima/Perl/testsoap.pl line 4
---------------- </snip> ----------------

最初、期待した XML が画面にどばーっと表示されたので喜んだのですが、
トレースモードの設定と、結果を print する行をコメントアウトしても、
返されたXMLが表示されちゃう (^^; ので、気が付きました。
ちゃんとサポートしてくれるように、作者にお願いしないとだめですかね。
パッチを作って送ってあげられたら良いのですが...。

---------------- <snip> ----------------
#!/usr/bin/perl -w
use strict;
use SOAP::Lite; # +trace => qw(debug);
my $result = SOAP::Lite
    ->serializer(MySerializer->new_literal)
    ->uri('urn:AddressFetcher')
    ->proxy('http://localhost:8080/soap/servlet/rpcrouter')
    ->getAllListings();
# print $result->result;

BEGIN {
    package MySerializer; @MySerializer::ISA = 'SOAP::Serializer';
    my $litencurl = "http://xml.apache.org/xml-soap/literalxml";
    sub new_literal {
      my $self = shift->SUPER::new(@_);
      $self->{_attr}{"{$SOAP::Constants::NS_ENV}encodingStyle"} = $litencurl;
      $self->{_namespaces}{$litencurl} = $SOAP::Constants::PREFIX_ENC;
      $self;
    }
}
---------------- </snip> ----------------




More information about the Kansai-pm mailing list