use strict; use SOAP::Lite +trace => 'all'; my $ns = 'http://www.XXXXX.com/WebServices/HostService'; my $ep = 'http://localhost/'; my $lite = SOAP::Lite->uri($ns)->proxy($ep)->on_action( sub { join "", @_ } ); $lite->autotype(0); $lite->soapversion('1.1'); $lite->serializer()->namespaces({'http://schemas.xmlsoap.org/soap/envelope/' => 'soap'}); $lite->autotype(0); my $doc = SOAP::Data->name('doRateQuote')->uri($ns)->prefix('m'); my $value = SOAP::Data->value( SOAP::Data->name( WSRateQuoteHostRequest => \SOAP::Data->value(SOAP::Data->name( destZipCode => '03872' ), SOAP::Data->name( originZipCode => '30263' ), SOAP::Data->name( fmsLocationId => 'XXXXX' ) ))->type('ns100:WSRateQuoteHostRequest') ->attr({'xmlns:ns100' => "java:com.XXXXX.webservice"})); my $res = $lite->call($doc => $value); print $res, "\n";