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

I am seeking words of wisdom from a guru who is knowledgeable in the realm of coding SOAP Servers and services with Perl and SOAP::Lite...
I get an error on the server side:
SOAP::Serializer::envelope: Client SOAPAction shall match 'uri#method' + if present (got 'urn:pmq#getServerInfo', expected 'http://www.perlmo +nks.org/PMQueue#getServerInfo' http://rppowell:88/
Can someone enlighten me in the workings of SOAP as a server?

-rppowell

Replies are listed 'Best First'.
Re: SOAP SOAP::Lite Server
by olus (Curate) on Nov 30, 2007 at 12:16 UTC
    Can you post some of your client code?
    Looks like your server is complaining about the value of the SOAPAction header.

    You can
    use SOAP::Lite +trace => qw(method trace debug);
    on the client and see all the headers and the soap envelope your are sending to the server.

    Also, you can try on the client
    $soap = new SOAP::Lite ->ns($your_ns) ->proxy($your_proxy) ->on_action(sub{sprintf 'http://www.perlmonks.org/PMQueue#%s', $_[ +1] }) ; # the on_action will instruct SOAP::Lite to build the SOAPAction heade +r the way you want to

    --
    olus
      Using this in the server script:
      use SOAP::Lite +trace => qw(method trace debug);
      produces the following:
      Contact to SOAP server at http://rppowell:88/

      Using this in the server script:
      use SOAP::LITE + 'trace';
      produces the following: You can see where I got the error message.

      I have access to the WSDL in file form that is used in the generation of the gSOAP program code.
      I am using a binary compiled client (based on gSOAP, I think), to talk to the SOAP server.

      I am trying to duplicate the functionality of a Real gSOAP Server/service with a simple script, so that the binary client still works.

      What have other people used for doing SOAP server stuff?

      -rppowell

        On the WSDL you have a node called 'service'
        <service name=".........">
        and inside
        <port name=".....Soap" binding="tns:........."> <soap:address location="http://some_url#getServerInfo"/> </port>
        Is that location pointing to the right place?

        --
        olus