[SOAP::Lite] et HashMap

et HashMap [SOAP::Lite] - Perl - Programmation

Marsh Posté le 03-03-2005 à 18:18:13    

Bonjour à tous,
Je voudrais appeler une méthode d'un web service  
écrit en java (avec Axis) qui utilise un paramètre HashMap.
 
Je pensais qu'un simple tableau de hash suffirait (Php le transformant correctement) mais apparement non.
 

Code :
  1. sub new {
  2. my $type= shift;
  3. my %params = @_;
  4. my $self = {};
  5. bless $self, $type;
  6. ...
  7. my @paramVariable=();
  8. $self->{'paramVariables'} = \@paramVariable;
  9. }
  10. ...
  11. sub addParamVariables() {
  12. my $this = shift;
  13. my $scriptData = {};
  14. $scriptData->{'nom'} = $_[0];
  15. $scriptData->{'valeur'} = $_[1];
  16. $scriptData->{'idScript'} = $_[2];
  17. push( @{$this->{'paramVariables'}}, $scriptData );
  18. }
  19. ....
  20. my $soapClient = new SOAP::Lite->service( $this->{'wsdl'} );
  21. return $soapClient->preparerJob( $this->{'login'},$this->{'password'}, $this->{'idJob'}, @{$this->{'paramVariables'}});


 
Quelqu'un a déjà rencontré ce type de problème ?
J'ai vu qu'il existe un package Inline::Java, corrige t'il ce genre de problème ?  
 
Merci de vos réponse

Reply

Marsh Posté le 03-03-2005 à 18:18:13   

Reply

Marsh Posté le 06-03-2005 à 17:14:43    

Inline::Java, c'est pour inclure du code java directement dans ton code perl si je ne me trompe pas (sachant que c'est ce que Inline::C fait)

Reply

Marsh Posté le 21-03-2005 à 17:17:53    

OK, des petites vacances c'est toujours bénéfiques...
bon pas besoin du Inline::Java apparement pour résoudre le problème, une petite fonction qui fait l'affaire.
 

Code :
  1. sub toHashMap {
  2. my %hash = @_;
  3. my @keys = keys(%hash);
  4. my $key;
  5. my @hm;
  6. for $key ( @keys ) {
  7.  my $keyMap = SOAP::Data->name("key" => $key )->type("string" );
  8.  my $valueMap = SOAP::Data->name("value" => $hash{$key} )->type("string" );
  9.  push @hm , SOAP::Data->name("item" =>
  10.   \SOAP::Data->value( $keyMap, $valueMap )->type('apachesoap:mapItem'));
  11. }
  12. return SOAP::Data->name("hash" =>
  13.  \SOAP::Data->value(SOAP::Data->name("mapItem" => @hm)
  14.   ->type("apachesoap:mapItem" ))->type("Map" ));
  15. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed