PHP5 und Microsoft Live Search 2.0
-
22-08-2019 - |
Frage
Ich versuche, Live Search 2.0 zu verwenden, sondern auch ein einfaches Beispiel scheint nicht zu funktionieren. Microsoft Beispielcode nur für 1.1 hat und sie geben nicht heraus AppIDs für diese Version.
Hier ist, was ich versuche, mit:
<?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 korrekt im Code angegeben: Ich löschte es gerade von hier. Ich erhalte die folgende Fehlermeldung:
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
Lösung
Sie kann mit der richtigen Seife api URL für 2.0 beginnen. Es schneit „ http://api.search.live.net/search.wsdl?AppID = YourAppId “entnommen aus ( http://msdn.microsoft. com / en-us / library / dd250965.aspx )
Sie können auch die neue JSON api mit PHP verwenden.
$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
}
Und Theres endlich ein XML-API Sie auch an dem Msdn Link sehen können und es kann Sie einfach es anders entschlüsseln müssen im wesentlichen die gleiche Weise wie die json abgeholt werden.
Andere Tipps
Der Beispielcode für API 2.0 ist auf MSDN, aber wir haben nicht die komplette PHP-Code Probe noch aus. Ein erstes Codebeispiel (sehr ähnlich den in der Antwort, die Sie schon vor) in der Blog-Post enthielt auf der Live Search Developer Blog
Sie können sich bewusst sein, dass es derzeit einige Probleme mit SOAP in PHP 5.2.6 - der Live-Search-Dienst scheint sowohl in 1.1 und 2.0 von ihr betroffen zu sein. Die einfachste Abhilfe ist, eine andere Schnittstelle (JSON oder XML) zu verwenden,