Accessing MSN Search Web Service from Perl
I've been trying to build a MSN Search API client with Perl using SOAP::Lite to interface with the SOAP server. I'm not an expert using Perl or SOAP so any help would be appreciated.
Perl Code
use SOAP::Lite +trace;
my $appID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
my $msn = SOAP::Lite->service( 'http://soap.search.msn.com/webservices.asmx?wsdl' );
my $response = $msn->Search( (
'Request' => (
'AppID' => $appID,
'Query' => 'xbox',
'CultureInfo' => 'en-US',
'SafeSearch' => 'Off',
'Requests' => (
'SourceRequest' => (
'Source' => 'Web',
'Offset' => 0,
'Count' => 10,
'ResultFields' => 'All' ) ) ) ) );
XML Request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<Search xmlns="">
<parameters>Request</parameters>
<c-gensym4 xsi:type="xsd:string">AppID</c-gensym4>
<c-gensym6 xsi:type="xsd:string">216E46FB39A188C9863A21371B087D82D6B74B23</c-gensym6>
<c-gensym8 xsi:type="xsd:string">Query</c-gensym8>
<c-gensym10 xsi:type="xsd:string">xbox</c-gensym10>
<c-gensym12 xsi:type="xsd:string">CultureInfo</c-gensym12>
<c-gensym14 xsi:type="xsd:string">en-US</c-gensym14>
<c-gensym16 xsi:type="xsd:string">SafeSearch</c-gensym16>
<c-gensym18 xsi:type="xsd:string">Off</c-gensym18>
<c-gensym20 xsi:type="xsd:string">Requests</c-gensym20>
<c-gensym22 xsi:type="xsd:string">SourceRequest</c-gensym22>
<c-gensym24 xsi:type="xsd:string">Source</c-gensym24>
<c-gensym26 xsi:type="xsd:string">Web</c-gensym26>
<c-gensym28 xsi:type="xsd:string">Offset</c-gensym28>
<c-gensym30 xsi:type="xsd:int">0</c-gensym30>
<c-gensym32 xsi:type="xsd:string">Count</c-gensym32>
<c-gensym34 xsi:type="xsd:int">10</c-gensym34>
<c-gensym36 xsi:type="xsd:string">ResultFields</c-gensym36>
<c-gensym38 xsi:type="xsd:string">All</c-gensym38>
</Search>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML Response
<?xml version="1.0" encoding="utf-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Client</faultcode>
<faultstring>Client Error</faultstring>
<detail>Invalid request</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
As you can see, I'm getting an INVALID REQUEST. Does anyone have a working Perl example? Thanks.

