Question

Je suis en train d'utiliser Live Search 2.0, mais même un exemple simple ne semble pas fonctionner. Microsoft ne dispose que d'un exemple de code pour 1.1 et ils ne baissons pas à AppIDs pour cette version.

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. Je reçois 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
Était-ce utile?

La solution

Vous pouvez commencer par utiliser l'URL correcte du savon api pour 2.0. La neige « http://api.search.live.net/search.wsdl?AppID = YourAppId » pris de ( http://msdn.microsoft. com / fr-fr / bibliothèque / dd250965.aspx )

Vous pouvez également utiliser la nouvelle JSON api 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 un 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.

Autres conseils

L'exemple de code pour l'API 2.0 est sur MSDN, mais nous n'avons pas l'échantillon complet du code PHP sur encore. 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 sur le live Search Blog développeur

Vous savez peut-être qu'il ya actuellement quelques problèmes avec SOAP PHP 5.2.6 - le service live Search semble être affecté par elle à la fois 1.1 et 2.0. La solution la plus simple consiste à utiliser une autre interface (JSON ou XML)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top