2008-12-17 5 views
0

J'essaie d'utiliser Live Search 2.0, mais même un exemple simple ne semble pas fonctionner. Microsoft a seulement un exemple de code pour 1.1 et ils ne donnent pas d'AppID pour cette version.PHP5 et Microsoft Live Search 2.0

Voici ce que je suis en train avec:

<?php 
$server = new SoapClient('http://soap.search.msn.com/webservices.asmx?wsdl'); 

class Search { 
    public $Request; 
} 

class SearchRequest { 
    public $AppID; 
    public $Query; 
    public $CultureInfo; 
    public $SafeSearch; 
    public $Flags; 
    public $Location; 
    public $Requests; 
} 

class SourceRequest { 
    public $Source; 
    public $Offset; 
    public $Count; 
    public $FileType; 
    public $SortBy; 
    public $ResultFields; 
    public $SearchTagFilters; 
} 

$searchRequest = new SourceRequest(); 
$searchRequest->Source = 'Web'; 
$searchRequest->Offset = 0; 
$searchRequest->Count = 5; 
$searchRequest->ResultFields = 'All SearchTagsArray'; 

$request = new SearchRequest(); 
$request->AppID = '...'; 
$request->Query = 'Bill Gates'; 
$request->CultureInfo = 'en-US'; 
$request->SafeSearch = 'Off'; 
$request->Flags = ''; 
$request->Requests = array($searchRequest); 

$search = new Search(); 
$search->Request = $request; 

$server->Search($search); 
?> 

AppID est correctement spécifié dans le code: J'effacé d'ici. J'obtiens l'erreur suivante:

Array ([0] => SearchResponse Search(Search $parameters)) 
Fatal error: Uncaught SoapFault exception: [soapenv:Client] Client Error in /Users/thardas/Sites/vt9/widgets/ms_livesearch.php:41 
Stack trace: 
#0 [internal function]: SoapClient->__call('Search', Array) 
#1 /Users/thardas/Sites/vt9/widgets/ms_livesearch.php(41): SoapClient->Search(Object(SearchRequest)) 
#2 /Users/thardas/Sites/vt9/index.php(23): include('/Users/thardas/...') 
#3 {main} thrown in /Users/thardas/Sites/vt9/widgets/ms_livesearch.php on line 41 

Répondre

2

Vous pouvez commencer en utilisant l'api url de savon approprié pour 2.0. Il est maintenant "http://api.search.live.net/search.wsdl?AppID=YourAppId" pris de (http://msdn.microsoft.com/en-us/library/dd250965.aspx)

Vous pouvez également utiliser la nouvelle api JSON avec php.

$appid = 'Your app id'; 
$searchitem = 'PHP Manual'; 
    $request = 'http://api.search.live.net/json.aspx?Appid=' . $appid . '&sources=web&query=' . urlencode($searchitem); 
    $response = file_get_contents($request); 
    $jsonobj = json_decode($response); 
    foreach($jsonobj->SearchResponse->Web->Results as $value) 
    { 
    //$value->Url 
    //$value->Title 
    //$value->Description 
    } 

Et enfin Theres api xml vous pouvez consulter sur le lien msdn ainsi et il peut être récupéré essentiellement de la même manière que le JSON vous avez juste besoin de le décoder différemment.

0

L'exemple de code pour API 2.0 est sur MSDN mais l'exemple de code PHP complet n'est pas encore disponible. Un premier exemple de code (très similaire à celui de la réponse que vous avez déjà obtenu) est inclus dans le billet de blog on the Live Search Developer Blog

Vous savez peut-être qu'il ya actuellement un certain issues with SOAP en PHP 5.2.6 - le service Live Search semble d'être affecté à la fois par 1.1 et 2.0. La solution de contournement la plus simple consiste à utiliser une autre interface (JSON ou XML)