2012-02-20 11 views
1

私はSOAP :: Liteを使って "SOAP" -Service-WSDL(ASMX resp)と通信します。 PerlでSOAP :: Liteは複合型 "配列"で "オーバーフロー"を生成します

<scriptParameters> 
    <string>string</string> 
    <string2>string2</string2> 
</scriptParameters> 

私は、次のコードを使用します:

my @args; 
my @params; 
foreach (keys %{$self->{args}}) { 
    push(@params, SOAP::Data->name($_ => $self->{args}->{$_})->type("")); 
} 
push(@data, SOAP::Data->name("scriptParameters" => SOAP::Data->value(\@params)->type(""))->type("")); 

をしかし、これは、次のXMLを作成します。 このサービスはそうのように、引数の配列を必要と

<scriptParameters soapenc:arrayType="xsd:anyType[11]" xsi:type="namesp20"> 
    <job_id xsi:type="xsd:int">18381</job_id> 
    <dump xsi:type="xsd:int">0</dump> 
</scriptParameters 

注意をsoapenc:arrayType ...-scriptParameters-Elementの-stuffです。

この問題は、ASMX-ServiceがscriptParameters配列を認識しないことを示しています(私はsoapenc-stuffのために考えています(残念ながら、これはdebug'ableではありません)。追加データ?実際のサービスを知って、これは少し難しいさまざまなオプションを試してみることができないなし

答えて

0

:)

感謝。しかし私の経験では、 "soapenc:arrayType"の使用は、サービスがドキュメント/リテラル​​またはRPC /リテラル​​ではなくRPC/encoded SOAPサービスであると考えるSOAP :: Liteの症状です。だから、どのメソッドを使ってサービスプロキシを作成しているのか確認してください。 '$ soap-> service($ WSDL)'メソッドはRPC/encodedと仮定していますが、 '$ soap-> proxy()'メソッドは、いくつかの追加の複雑さ。

適切なXMLを生成するためにSOAP :: Liteを説得するのはちょっと難しいことがあります。 SOAPを使用して、特定のデータ構造を構築する方法についていくつかのヒントについては、以下のサイトを見て:: Liteと:サンプルコード、後から

EB-eye Webサービス(ebeye_soaplite.pl)がリスト/配列を多く使用するので、最も役立つ可能性があります。

あなたはSOAP :: Liteにどのように縛られているかによって、代替案を見たいかもしれません。複雑な型を使用するドキュメント/リテラル​​SOAPサービスでは、XML :: Compile :: SOAPがかなり使いやすくなることがわかりました。

関連する問題