Thread Datenstruktur mit SOAP::Data (4 answers)
Opened by bianca at 2010-06-13 17:32

Gast bianca
 2010-06-13 17:32
#138288 #138288
Guten Tag!
Es muss eine SOAP Datenstruktur in der Art wie diese für einen Request "gebaut" werden:
Code: (dl )
1
2
3
4
5
6
7
8
[item] => Array 
(
["country"] => NL
)
[item] => Array
(
["step"] => 1
)


Dafür habe ich folgendes versucht:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl -w 
use strict; 
use warnings; 
use diagnostics; 
use Data::Dumper; 
use SOAP::Lite; 
my %data_to_send_in_soap_map = ( 
  'country' => 'NL', 
  'step' => '1', 
); 
my (@soap_map,@params); 
foreach my $key (keys %data_to_send_in_soap_map) { 
  push @soap_map, 
    \SOAP::Data -> name ('item') -> value ( 
      SOAP::Data -> name ($key) -> value ($data_to_send_in_soap_map{$key}), 
    ) 
  ; 
} 
@params = ( 
  SOAP::Data -> name ('params') -> value (@soap_map) 
); 
print Dumper (\@params);


Damit fehlt mir allerdings das 'item' in der Struktur, es kommt so beim Server an:

Code: (dl )
1
2
3
4
5
6
Array (
[country] => NL
)
Array (
[step] => 1
)


Wenn ich nun dies hier mit eckigen Klammern versuche:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl -w 
use strict; 
use warnings; 
use diagnostics; 
use Data::Dumper; 
use SOAP::Lite; 
my %data_to_send_in_soap_map = ( 
 'country' => 'NL', 
 'step' => '1', 
); 
my (@soap_map,@params); 
foreach my $key (keys %data_to_send_in_soap_map) { 
 push @soap_map, 
  \SOAP::Data -> name ('item') -> value ([ 
    SOAP::Data -> name ($key) -> value ($data_to_send_in_soap_map{$key}), 
  ]) 
 ; 
} 
@params = ( 
 SOAP::Data -> name ('params') -> value (@soap_map) 
); 
print Dumper (\@params); 


dann ist 'item' zwar vorhanden aber alle keys haben den Inhalt '0':

Code: (dl )
1
2
3
4
5
6
7
8
9
10
Array (
[item] => Array(
[0] => NL
)
)
Array (
[item] => Array(
[0] => 1
)
)


Der ganze Request als XML soll so aussehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
<params xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">country</key>
<value xsi:type="xsd:string">NL</value>
</item>
<item>
<key xsi:type="xsd:string">step</key>
<value xsi:type="xsd:string">1</value>
</item>
</params>


Wie muss ich das für SOAP::Data richtig formulieren?

Vielen Dank

Crosspost: http://perlguru.com/gforum.cgi?post=46909

View full thread Datenstruktur mit SOAP::Data