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

Hi, I have this piece of code:
use SOAP::Lite; print SOAP::Lite -> service('http://localhost:8080/helloservice/hello?wsdl') -> plus(2,3);

That WSDL is valid, that I know for sure as I can access through Java with no problem. But with Perl, it says:

Service description 'http://localhost:8080/helloservice/hello?wsdl' ca +n't be loa ded: 403 Proxy denies fulfilling the request

Your thought? SOAP::Lite document did say that it has limited support for WSDL, but was very vague, so limited support of what? to what level? The perl I am using is 5.8.7 on windows.

Replies are listed 'Best First'.
Re: Problem with SOAP::Lite and WSDL?
by eXile (Priest) on Mar 19, 2006 at 01:41 UTC
    The 403 HTTP status code is defined as: The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated. If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, it SHOULD describe the reason for the refusal in the entity. If the server does not wish to make this information available to the client, the status code 404 (Not Found) can be used instead.

    I don't know a lot about SOAP::Lite or WSDL, but the way I would debug this is make dumps (Ethereal is a good tool for that that is available for windows) from the networktraffic generated both by your Java app and your perl app and compare these, The headers and responses sent to the server should tell you something about what is going wrong.

    hth

Re: Problem with SOAP::Lite and WSDL?
by duckyd (Hermit) on Mar 19, 2006 at 05:58 UTC
    It looks like your server is refusing to serve the WSDL to your client for some reason. In addition to eXile's advice on how to track down what's happening, you might look through your server's logs.

    SOAP::Lite does not support complex types from a WSDL.

Re: Problem with SOAP::Lite and WSDL?
by hyperbole (Novice) on Mar 19, 2006 at 17:17 UTC
    I'm not very familiar with SOAP. I do have one perl script that uses SOAP::Lite and it seems to work. The one thing I can see that may be missing from your script is you don't seem to be sending a user-id/password. Try something like
    sub SOAP::Transport::HTTP::Client::get_basic_credentials { return $user_id => $password; }
    .