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

Hallo Monks,
I try to comsumig a Web service with wsdl on a .NET server and after a call I get always 400 Bad request message.

I prepare xml code to send using SOAP::Data and send it with this code:

my $som = SOAP::Lite -> encoding('literal') -> service($wsdl) -> proxy($service_address, keep_alive => 1) -> on_action(sub {sprintf '%s',$soapaction, shift}); $som -> call(SOAP::Data->name('GetFUR')-> attr({xmlns => 'https://webd +pc.federfarma.lombardia.it/DpcServices/FurService'}) => $input,$securityHeader);

SOAP::Lite trace print the sent message as:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x +mlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="h +ttp://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.x +mlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soa +p/envelope/"> <soap:Header> ....
but at the server side I receive:

<![CDATA[<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-in +stance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xml +ns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http:// +schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoa +p.org/soap/envelope/"> <soap:Header> ...... ]]>


Why this happen? I don't understand and some tests do always the same problem.

Any help would be greatly appreciated.

Replies are listed 'Best First'.
Re: SOAP::Lite client and .NET server
by psini (Deacon) on Jun 08, 2008 at 20:04 UTC

    I'm not sure of what I'm saying and can't verify because i'm in an internet cafe right now :), but are you sure of the directive encoding('literal')?

    I suspect it could be the cause of that CDATA that should not be there!

    Ciao

    Careful with that hash Eugene.

      I tried without ecoding('literal') but I get the same response.
      Ciao.