PHP5 y Microsoft Live Search 2.0
-
22-08-2019 - |
Pregunta
Estoy tratando de utilizar Live Search 2.0, pero aún no parece un ejemplo sencillo para trabajar. Microsoft sólo tiene el código de ejemplo para 1.1 y no están dando AppIDs para esa versión.
Esto es lo que estoy tratando con:
<?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 se especifica correctamente en el código: Me acabas de borrar desde aquí. Estoy consiguiendo el error siguiente:
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
Solución
Se puede comenzar utilizando el correcto url jabón API de 2.0. Nieva " http://api.search.live.net/search.wsdl?AppID = YourAppId " tomada a partir de ( http://msdn.microsoft. com / es-es / library / dd250965.aspx )
También puede utilizar la nueva API JSON con 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
}
Y, por último theres una API XML se puede consultar en el enlace de MSDN, así y puede ser traída esencialmente la misma forma que el JSON sólo tiene que decodificar de manera diferente.
Otros consejos
El código de ejemplo para la API 2.0 es en MSDN, pero no tenemos la muestra completa código PHP a cabo todavía. Un primer ejemplo de código (muy similar a la de la respuesta que ya tienes) en incluido en la entrada del blog en el Live Search Developer Blog
Es posible que tener en cuenta que en la actualidad hay algunas cuestiones con jabón en PHP 5.2.6 - el servicio de búsqueda en vivo parece ser afectada por ella, tanto en 1.1 y 2.0. La solución más simple es utilizar otra interfaz (JSON o XML)