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


in reply to Re^3: checkVat - SOAP::Lite
in thread checkVat - SOAP::Lite

FWIW, I would have never gone digging that up, I just supplied 0 0

Anyway, it doesn't look like you should bother the nice admin, though he should have supplied example session if you ask me
soap-lite-sent.xml
<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope soap:encodingStyle="http://schemas.xmlsoap.org/soap/enc +oding/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl= +"urn:ec.europa.eu:taxud:vies:services:checkVat" xmlns:soap="http://sc +hemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlso +ap.org/soap/encoding/" xmlns:tns1="urn:ec.europa.eu:taxud:vies:servic +es:checkVat:types" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmln +s:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http:// +www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchem +a-instance"> <soap:Body> <impl:checkVat> <countryCode xsi:type="xsd:string">IE</countryCode> <vatNumber xsi:type="xsd:string">1234567890</vatNumber> </impl:checkVat> </soap:Body> </soap:Envelope>
soap-simple-sent.xml
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/env +elope/"> <SOAP-ENV:Body> <tns1:checkVat xmlns:tns1="urn:ec.europa.eu:taxud:vies:services:ch +eckVat:types"> <tns1:countryCode>IE</tns1:countryCode> <tns1:vatNumber>1234567890</tns1:vatNumber> </tns1:checkVat> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Could you get SOAP::Lite to generate that kind of SOAP? Probably, but having done it before, I wouldn't bother , too much typing :)

Replies are listed 'Best First'.
Re^5: checkVat - SOAP::Lite
by Anonymous Monk on May 04, 2011 at 15:19 UTC
    I forgot to say, the SOAP::Simple generated soap request returns 200 OK and data
    $VAR1 = { 'parameters' => { 'requestDate' => '2011-05-04+02:00', 'vatNumber' => '1234567890', 'valid' => 0, 'countryCode' => 'IE' } };
      Nice!
      Unfortunately, we're not in control of the server that we're installing it to, so installing SOAP::Simple isn't an alternative. So I copied your xml output and did it the ugly way:
      #!/usr/bin/perl -w use strict; use LWP::UserAgent; use HTTP::Request::Common; my $userAgent = LWP::UserAgent->new(agent => 'perl post'); my $message = qq^<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/env +elope/"> <SOAP-ENV:Body> <tns1:checkVat xmlns:tns1="urn:ec.europa.eu:taxud:vies:services:ch +eckVat:types"> <tns1:countryCode>IE</tns1:countryCode> <tns1:vatNumber>1234567890</tns1:vatNumber> </tns1:checkVat> </SOAP-ENV:Body> </SOAP-ENV:Envelope>^; my $response = $userAgent->request(POST 'http://ec.europa.eu/taxation_ +customs/vies/services/checkVatService', Content_Type => 'text/xml', Content => $message); print $response->error_as_HTML unless $response->is_success; print $response->as_string;
      However, I will of course push for getting the SOAP::Simple installed on the target server, but this solved the immediate problem. Thanks!