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

Re: client-server forwarding trickery

Expand Messages
  • mbrutsch@intrusion.com
    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
    Message 1 of 9 , Apr 5, 2001
    • 0 Attachment
      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.
    • 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 2 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 3 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 4 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 5 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 6 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.