Loading ...
Sorry, an error occurred while loading the content.

RE: [soaplite] valueof usage help needed

Expand Messages
  • Byrne Reese
    Try this: print $som- valueof( //OpGetResponse/Full_Name ) ; print $som- valueof( //OpGetResponse/Email_Address ); I know it is a little different than what
    Message 1 of 4 , May 7, 2003
    • 0 Attachment
      Try this:
       
      print $som->valueof('//OpGetResponse/Full_Name')  ;
      print $som->valueof('//OpGetResponse/Email_Address');

      I know it is a little different than what you might expect considering how XPath works. But the root element of the SOAP Body is considered the ROOT element of the SOM object.
       
      -----Original Message-----
      From: Kamlesh [mailto:kp52r11@...]
      Sent: Tuesday, May 06, 2003 9:48 PM
      To: soaplite@yahoogroups.com
      Subject: [soaplite] valueof usage help needed

      I have this code.
      #!c:\perl\bin\perl.exe -w

        use SOAP::Lite;
        use Data::Dumper;

        my $soap = SOAP::Lite
           ->service
      ('http://hdwebqa/arsys/WSDL/SJCappServer/UserLoginName');

        my $som = $soap->OpGet(SOAP::Data->name("Request_ID"
      => '000000000000002'));

      print $som->valueof('//Envelope/Body/OpGetResponse/Full_Name')  ;
      print $som->valueof('//Envelope/Body/OpGetResponse/Email_Address');

      I know my wsdl works.
      But I don't know how to get the response back.  There are 2 values
      returned back but I can't figure out how to use it.

      I am getting this error:

      Can't call method "valueof" without a package or object reference at
      C:\DOCUME~1\kp52r11\LOCALS~1\Temp\dir138.tmp\r3.pl line 13.

      CAN U HELP!!!




      To unsubscribe from this group, send an email to:
      soaplite-unsubscribe@yahoogroups.com



      Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
    • Duncan Cameron
      ... As Alberto points out, when using service() SOAP::Lite returns the actual result, not a SOM object. The way to get hold of the SOM object when using a
      Message 2 of 4 , May 7, 2003
      • 0 Attachment
        On 2003-05-07 Alberto Accomazzi wrote:
        >> Date: Wed, 07 May 2003 04:47:59 -0000
        >> From: "Kamlesh" <kp52r11@...>
        >> Subject: valueof usage help needed
        >>
        >> I have this code.
        >> #!c:\perl\bin\perl.exe -w
        >>
        >> use SOAP::Lite;
        >> use Data::Dumper;
        >>
        >> my $soap = SOAP::Lite
        >> ->service
        >> ('http://hdwebqa/arsys/WSDL/SJCappServer/UserLoginName');
        >>
        >> my $som = $soap->OpGet(SOAP::Data->name("Request_ID"
        >> => '000000000000002'));
        >>
        >> print $som->valueof('//Envelope/Body/OpGetResponse/Full_Name') ;
        >> print $som->valueof('//Envelope/Body/OpGetResponse/Email_Address');
        >>
        >> I know my wsdl works.
        >> But I don't know how to get the response back. There are 2 values
        >> returned back but I can't figure out how to use it.
        >>
        >> I am getting this error:
        >>
        >> Can't call method "valueof" without a package or object reference at
        >> C:\DOCUME~1\kp52r11\LOCALS~1\Temp\dir138.tmp\r3.pl line 13.

        > From what I can tell if you give SOAP::Lite a WSDL file to instantiate
        >your SOAP object, it will deserialize the response into a hash (rather
        >than returning a SOAP::SOM object). My guess is that this is a
        >"feature" although it's not clear to me why things were done this way
        >and if there is any workaround. Among other things, this becomes a
        >problem if you want to check for a fault.
        >
        >To see the contents of the returned value, I suggest you do this:
        >
        >use Data::Dumper;
        >my $hash = $soap->OpGet(SOAP::Data->name("Request_ID" =>
        >'000000000000002'));
        >print Data::Dumper->Dump([$hash]);

        As Alberto points out, when using service() SOAP::Lite returns the actual
        result, not a SOM object. The way to get hold of the SOM object when
        using a service is

        $som = $soap->call;
        # with no parameters call() returns the result of the last call

        Regards,
        Duncan
      Your message has been successfully submitted and would be delivered to recipients shortly.