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

Re: [soaplite] Re: client-server forwarding trickery

Expand Messages
  • Brutsch, Michael
    ... Now I just get Can t call method fault on an undefined value instead. ... Tried this, no discernable change in output. ... At present, I have no output
    Message 1 of 9 , Apr 5 10:16 AM
    • 0 Attachment
      Paul Kulchenko wrote:

      > Hi, Michael!
      >
      > Usually that means that server returned fault message. You may check
      > fault first:
      >
      > my $soap = SOAP::Lite
      > ->uri/proxy/etc()
      > ->method(@parameters);
      >
      > print $soap->fault ? $soap->faultstring : $soap->result;

      Now I just get 'Can't call method "fault" on an undefined value' instead.

      >
      > You may also switch on debug on client side with
      >
      > SOAP::Lite
      > ->uri(...)
      > ->proxy(...)
      > ->on_debug(sub{print@_})

      Tried this, no discernable change in output.

      > ....
      >
      > and you'll see both request and response with headers. If it won't
      > give you any ideas about the reason, send me output, I'll take a
      > look.

      At present, I have no output other than the error message. I could send
      you the client and server (they're just hibye.pl/cgi converted to
      Transport::TCP), but you'd need the port forwarder to break'em. :)

      Thanks,
      Michael

      >
      > Best wishes, Paul.
      >
      > --- mbrutsch@... wrote:
      >
      >> I found a port forwarder in the Perl Cookbook(tm), and it seems to
      >> work well. (I run webmin on localhost:10000; if I forward 8000 to
      >> 10000, then I can access webmin on localhost:8000). I can also
      >> make
      >> the SOAP c/s work perfectly, using TCP transport and port 12000.
      >> But
      >> if I change the client to 12001, and forward 12001 to 12000, the
      >> method executes on the server, but the client dies with 'Can't call
      >> method "result" on an undefined value'. Any thoughts?
      >>
      >> Thanks,
      >> Michael
      >>
      >>
      >>>> Interesting question, but it seems like you don't need SOAP
      >>>
      >> server
      >>
      >>>> that will forward requests, you just need to have simple proxy
      >>>> that will forward request to SOAP server unavailable from
      >>>> internet.
    • mbrutsch@intrusion.com
      Paul, I am setting up an object, like so: my $soap = SOAP::Lite - uri/proxy/etc(); my $object = $soap - call(new = parm1, = parm2) - result; Then I call a
      Message 2 of 9 , Apr 12 11:07 AM
      • 0 Attachment
        Paul,

        I am setting up an object, like so:

        my $soap = SOAP::Lite
        ->uri/proxy/etc();

        my $object = $soap
        -> call(new => parm1,
        => parm2)
        -> result;

        Then I call a method on that object:

        my $result = $soap
        -> method($object)
        -> result;

        $result contains the result. However, if I split the $soap->result
        off, like so:

        $soap
        -> method($object);

        my $result = $soap
        -> result;

        I always get '1' as a result. I'm trying to use the following line
        you sent me last week:

        > print $soap->fault ? $soap->faultstring : $soap->result;

        What am I doing wrong?

        Thanks,
        Michael
      • Paul Kulchenko
        Hi, Michael! While other methods for $soap object you may stack with arrow syntax (- ) because they return $soap object itself (when assigned value), method
        Message 3 of 9 , Apr 12 12:34 PM
        • 0 Attachment
          Hi, Michael!

          While other methods for $soap object you may stack with arrow syntax
          (->) because they return $soap object itself (when assigned value),
          method call always returns SOAP::SOM object which gives you access to
          the results of call:

          my $soap = SOAP::Lite->....;
          my $som = $soap->method(@parameters);
          print $som->result;

          which is the same as:

          print $soap->method(@parameters)->result;

          You skip assignment of result of method call, and got the wrong
          results. Hope it helps.

          Best wishes, Paul.

          --- mbrutsch@... wrote:
          > Paul,
          >
          > I am setting up an object, like so:
          >
          > my $soap = SOAP::Lite
          > ->uri/proxy/etc();
          >
          > my $object = $soap
          > -> call(new => parm1,
          > => parm2)
          > -> result;
          >
          > Then I call a method on that object:
          >
          > my $result = $soap
          > -> method($object)
          > -> result;
          >
          > $result contains the result. However, if I split the $soap->result
          > off, like so:
          >
          > $soap
          > -> method($object);
          >
          > my $result = $soap
          > -> result;
          >
          > I always get '1' as a result. I'm trying to use the following line
          > you sent me last week:
          >
          > > print $soap->fault ? $soap->faultstring : $soap->result;
          >
          > What am I doing wrong?
          >
          > Thanks,
          > Michael
          >
          >
          > ------------------------ Yahoo! Groups Sponsor
          >
          > To unsubscribe from this group, send an email to:
          > soaplite-unsubscribe@yahoogroups.com
          >
          >
          >
          > Your use of Yahoo! Groups is subject to
          > http://docs.yahoo.com/info/terms/
          >
          >


          __________________________________________________
          Do You Yahoo!?
          Get email at your own domain with Yahoo! Mail.
          http://personal.mail.yahoo.com/
        • Michael Percy
          Michael, As I understand it, you need to create a response object to access the ... my $soap = SOAP::Lite - proxy($proxy) - uri($uri); my $response =
          Message 4 of 9 , Apr 12 12:38 PM
          • 0 Attachment
            Michael,
            As I understand it, you need to create a response object to access the
            result. For example:

            ---
            my $soap = SOAP::Lite
            -> proxy($proxy)
            -> uri($uri);

            my $response = $soap->call($method => (@args));

            # Exit error if there is a transport problem
            if (!ref $response) {
            print STDERR "Error: Transport: ", $soap->transport->status, "\n";
            exit(1);
            }

            # Exit error if there is an application problem
            if ($response->fault) {
            print STDERR "Error: ", $response->faultcode, ": ",
            $response->faultstring, "\n";
            print STDERR " ", $response->faultdetail, "\n";
            exit(1);
            }

            # Exit success if everything goes ok
            print $response->result;
            exit(0);
            ---

            Hope that helps,
            Mike

            > -----Original Message-----
            > From: mbrutsch@... [mailto:mbrutsch@...]
            > Sent: Thursday, April 12, 2001 11:07 AM
            > To: soaplite@yahoogroups.com
            > Subject: [soaplite] Re: client-server forwarding trickery
            >
            >
            > Paul,
            >
            > I am setting up an object, like so:
            >
            > my $soap = SOAP::Lite
            > ->uri/proxy/etc();
            >
            > my $object = $soap
            > -> call(new => parm1,
            > => parm2)
            > -> result;
            >
            > Then I call a method on that object:
            >
            > my $result = $soap
            > -> method($object)
            > -> result;
            >
            > $result contains the result. However, if I split the $soap->result
            > off, like so:
            >
            > $soap
            > -> method($object);
            >
            > my $result = $soap
            > -> result;
            >
            > I always get '1' as a result. I'm trying to use the following line
            > you sent me last week:
            >
            > > print $soap->fault ? $soap->faultstring : $soap->result;
            >
            > What am I doing wrong?
            >
            > Thanks,
            > Michael
            >
            >
            > ------------------------ Yahoo! Groups Sponsor
            > ---------------------~-~>
            > Find software faster. Search more than 20,000
            > software solutions on KnowledgeStorm. Register
            > now and get started.
            > http://us.click.yahoo.com/HTDXJD/uMSCAA/zf4EAA/WNqXlB/TM
            > --------------------------------------------------------------
            > -------_->
            >
            > To unsubscribe from this group, send an email to:
            > soaplite-unsubscribe@yahoogroups.com
            >
            >
            >
            > Your use of Yahoo! Groups is subject to
            http://docs.yahoo.com/info/terms/
          Your message has been successfully submitted and would be delivered to recipients shortly.