Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Can't access class methods via SOAP

by gellyfish (Monsignor)
on Aug 05, 2004 at 08:31 UTC ( [id://380212]=note: print w/replies, xml ) Need Help??


in reply to Can't access class methods via SOAP

See this for the reason for the message in a general sense. The problem you are having is that you are trying to autodispatch to the method formal and this is blocked because you have not specified the module it is in in the 'dispatch_to'. you could try adding the module to the dispatch_to list, specifying the full package name of the method or call it as a subroutine (with call) just the same as you did with new().

/J\

Replies are listed 'Best First'.
Re^2: Can't access class methods via SOAP
by DamnDirtyApe (Curate) on Aug 05, 2004 at 16:06 UTC

    Thanks gellyfish, but I'm still having some problems. Here's how call() is used in the SOAP::Lite docs:

    # you should specify uri() my $soap = SOAP::Lite -> uri('http://my.own.site/CLASS') # <<< CLASS goes here # ..... other parameters ; my $obj = $soap->call(new => @parameters)->result; print $soap->call(method => $obj)->result; # $obj object will be updated here if necessary, # as if you call $obj->method() and method() updates $obj # Update of modified object MAY not work if server on another side # is not SOAP::Lite

    And here's what I've done:

    #! /usr/bin/perl -w use strict; use SOAP::Lite; my $soap = SOAP::Lite -> proxy( 'http://dg.homeunix.org/cgi-bin/soapserver.cgi' ) -> uri( 'http://dg.homeunix.org/Greeter' ) -> on_fault( sub { my($soap, $res) = @_; die ref $res ? $res->faultstring : $soap->transport->status, +"\n"; }); my $greeter = $soap->call( new => 'Doug' )->result; print $soap->call( formal => $greeter )->result; __END__

    ...and I get the same error as before.


    _______________
    DamnDirtyApe
    Those who know that they are profound strive for clarity. Those who
    would like to seem profound to the crowd strive for obscurity.
                --Friedrich Nietzsche

      I think you need to go back to basics - this works:

      Server: #! /usr/bin/perl use strict; use SOAP::Transport::HTTP; use lib '/var/www/cgi-bin/soap_modules'; + use Greeter; SOAP::Transport::HTTP::CGI -> dispatch_to( '/var/www/cgi-bin/soap_modules','Greeter') -> handle; Client: #! /usr/bin/perl -w use strict; + use SOAP::Lite +autodispatch => proxy => 'http://localhost/cgi-bin/soaptest.cgi', uri => 'http://localhost/Greeter' , on_fault => sub { my($soap, $res) = @_; die ref $res ? $res->faultstring : $soap->transport->status, +"\n"; }; + my $greeter = Greeter->new('Doug'); print $greeter->formal();

      You will find that you get bitten like this when trying to do this kind of stuff.

      /J\

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://380212]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2024-04-25 05:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found