Thread Datenstruktur mit SOAP::Data
(4 answers)
Opened by bianca at 2010-06-13 17:32
Danke topeg!
Allerdings wird diese Variante vom Server so empfangen: Der Server scheint es nicht als key-value Paare sondern andres zu erkennen. Als XML sieht diese Variante so aus: Code: (dl
)
1 <?xml version="1.0" encoding="UTF-8"?> Vielleicht erkennt der Server das jetzt anders wegen dieser c-gensym Tags oder der fehlenden xsd Bezeichnungen? Den Request als XML kann man übrigens so provozieren: use SOAP::Lite +trace => 'all'; als Aufruf dann ein Objekt generieren mit einer bewusst falschen URL: my $soap = SOAP::Lite->proxy('binnichtda')->autotype(0); und am Ende eine nicht existente Funktion aufrufen: $soap->call('foo',@params); Komplett inkl. topeg's Vorschlag: 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 23 24 25 26 #!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; use SOAP::Lite +trace => 'all'; my $soap = SOAP::Lite->proxy('http://binnicihtda:8080')->autotype(0); 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($key), SOAP::Data->name('value')->value($data_to_send_in_soap_map{$key}) ]); } @params = ( SOAP::Data->name('params')->type('ns2:Map')->value(\@soap_map) ); print Dumper (\@params); $soap->call('foo',@params); Ausgabe gekürzt: Code: (dl
)
1 SOAPAction: "#foo" Last edited: 2010-06-14 08:51:09 +0200 (CEST) |