Pergunta

Eu estou tentando usar o Live Search 2.0, mas mesmo um exemplo simples não parece trabalho. Microsoft tem apenas exemplo de código para 1.1 e não está dando para fora AppIDs para essa versão.

Aqui está o que eu estou tentando com:

<?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á corretamente especificado no código: Eu só apagou a partir daqui. Estou recebendo o seguinte erro:

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
Foi útil?

Solução

Você pode começar usando a url sabão api adequada para 2.0. É neve " http://api.search.live.net/search.wsdl?AppID = YourAppID " retirado ( http://msdn.microsoft. com / en-us / library / dd250965.aspx )

Você também pode usar a nova API JSON com 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
    } 

E, finalmente, theres um xml api você pode olhar para o link MSDN bem e pode ser obtida essencialmente da mesma maneira como o json você só precisa decodificá-lo de forma diferente.

Outras dicas

O código de exemplo para a API 2.0 é no MSDN, mas não temos o exemplo de código PHP completa ainda. A primeira amostra de código (muito semelhante ao da resposta que você já tem) em incluído no post no Live Search desenvolvedor Blog

Você pode estar ciente de que existem actualmente cerca problemas com sabão em PHP 5.2.6 - o serviço Live Search parece ser afetado por ela em ambos 1.1 e 2.0. A solução mais simples é usar outra interface (JSON ou XML)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top