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

mishima at momo.so-net.ne.jp mishima at momo.so-net.ne.jp
Fri Jan 3 18:50:59 CST 2003


三嶋@難波です。

中島さん、ありがとうございます。
すごいですね。うまく動きました。

但し、そのままだと、
SOAPAction: "urn:AddressFetcher#getAllListings"
となってほしいヘッダが、なぜか
SOAPAction: "#getAllListings"
となってしまい、サーバにハネられました。

試しに、
「->serializer(MySerializer->new_literal)」の行を、
「->uri('urn:AddressFetcher')」の前に置くと直りました。

なんか怪しいなあ...。(^^;
どういう理屈でそうなるのか、よくわかりません。
ソースを解読してみます。
ありがとうございました。


From: Yasushi Nakajima <sey at jkc.co.jp>
Subject: Re: [kansaipm] SOAP::Lite で encodingStyle を指定する方法は?
Date: Sat, 04 Jan 2003 02:16:51 +0900

>  なんだかちょっと無理矢理な感じもしますが、こんなんでどうでしょう?
> 
> #!/usr/bin/perl -w
> use strict;
> use SOAP::Lite +trace => qw(debug);
> my $result = SOAP::Lite
>     ->uri('urn:AddressFetcher')
>     ->proxy('http://localhost:8080/soap/servlet/rpcrouter')
>     ->serializer(MySerializer->new_literal)
>     ->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;
>     }
> }
> 
> 
> 中島 靖
> 



More information about the Kansai-pm mailing list