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

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

Expand Messages
  • Paul Kulchenko
    Hi, Michael! Usually that means that server returned fault message. You may check fault first: my $soap = SOAP::Lite - uri/proxy/etc() - method(@parameters);
    Message 1 of 9 , Apr 5, 2001
    • 0 Attachment
      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;

      You may also switch on debug on client side with

      SOAP::Lite
      ->uri(...)
      ->proxy(...)
      ->on_debug(sub{print@_})
      ....

      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.

      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.
      >
      >
      > ------------------------ 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/
    • 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 2 of 9 , Apr 5, 2001
      • 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 3 of 9 , Apr 12, 2001
        • 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 4 of 9 , Apr 12, 2001
          • 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 5 of 9 , Apr 12, 2001
            • 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.