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

I get version mismatch, as my SOAP envelope begins with:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" + xmlns:typ="{$namespace}">
And the error I get is:
Couldn\'t create SOAP message. Expecting Envelope in namespace http:// +www.w3.org/2003/05/soap-envelope, but got http://schemas.xmlsoap.org/ +soap/envelope/
Anyone knows how to avoid this error and set the first w3 mentioned envelope in SOAP::Lite?

Replies are listed 'Best First'.
Re: SOAP::Lite anyone knows how to specify an envelope?
by Anonymous Monk on Mar 15, 2010 at 21:40 UTC
    • put code/errors/input data... in code tags (ex: <c> insert code / data /error here </c>)
    • post a minimal program that reproduces your error ( see How (Not) To Ask A Question)
    • I'm guessing all you need to do is specify earlier version: $serial->soapversion('1.1');
      Here is code, and after change to 1.1. I got: Couldn\'t create SOAP message. Expecting Envelope in namespace http://www.w3.org/2003/05/soap-envelope, but got null I appreciate all suggestions to get this sample begin of SOAP to work. If I get it to work, I can do the rest.
      #!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; use SOAP::Lite 'autodispatch'; my $namespace = 'http://xmlns.telnic.org/ws/nsp/client/domain/types-1. +0'; my $soap = new SOAP::Lite uri => $namespace, proxy => [ 'https://telhosting.example.com/client', credentials => [ 'telhosting.example.com:443', 'api', 'myusrname' => 'mypass' ] ] ; $soap->serializer(SOAP::Serializer->new()); $soap->uri($namespace); $soap->default_ns($namespace); $soap->autotype(0); $soap->readable(1); $soap->soapversion('1.2'); $SOAP::Constants::DEFAULT_HTTP_CONTENT_TYPE= "application/soap+xml"; my $xml = qq{ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:typ="{$namespace}"> <soap:Header/> <soap:Body> <typ:updateDomainRequest domainName="tobuy.tel"> <typ:displayString>Hello this is SOAP::Lite test</typ:displayString> </typ:updateDomainRequest> </soap:Body> </soap:Envelope> }; #my $soap_data = new SOAP::Data->type('xml' => $xml); my $soap_data = new SOAP::Data ->name('listRecordsRequest') ->attr({ 'xmlns' => $soap->default_ns, }); my $response = $soap->call($soap_data); print Dumper $response;