http://www.perlmonks.org?node_id=795994

nedals has asked for the wisdom of the Perl Monks concerning the following question:

This should be really simple but it's not working for me. From my DOS window I can run....
## soapclient.pl ## use SOAP::Lite; print SOAP::Lite -> uri('http://www.soaplite.com/Demo') -> proxy('http://services.soaplite.com/hibye.cgi') -> hi() -> result; exit;
... and I get the expected result. However, if I put the 'same' SOAP server script on my server.
## soapserver.cgi ## #!/usr/bin/perl use SOAP::Transport::HTTP; SOAP::Transport::HTTP::CGI -> dispatch_to('Demo') -> handle; package Demo; sub hi { return "hello, world"; } sub bye { return "goodbye, cruel world"; } 1; exit;
and run....
## soapclient.pl ## use SOAP::Lite; print SOAP::Lite -> uri('http://www.anything.com/Demo') -> proxy('http://dev.domain.com/cgi-bin/soapserver.cgi') -> hi() -> result; exit;
I get a '500 Internal ServerError at soapclient.pl line 2'
I do not have access to the logs (don't ask), so I added
use CGI::Carp(qw/warningsToBrowser fatalsToBrowser/);
to my .cgi script and got this error..
Unexpected Content-Type 'text/html; charset=ISO-8859-1' returned.

The problem is possibly with the uri. I just don't understand how it's constructed.
My reading tells me it can be almost anything followed by a package name where the package path is relative to the proxy script.