PHP5 ve Microsoft Live Search 2.0

2 Cevap php

Ben Live Search 2.0 kullanmaya çalışıyorum ama daha basit bir örnek çalışmak için görünmüyor. Microsoft, yalnızca 1.1 için örnek kod vardır ve onlar bu sürümü için AppIDs verme değil.

İşte ben çalışıyorum ne:

<?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);
?>

Appıd doğru kodunda belirtilen: Ben sadece burada onu sildim. Ben şu hatayı alıyorum:

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

2 Cevap

You could begin by using the proper soap api url for 2.0. It's now "http://api.search.live.net/search.wsdl?AppID=YourAppId" taken from (http://msdn.microsoft.com/en-us/library/dd250965.aspx )

Ayrıca php ile yeni json api kullanabilirsiniz.

$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
    }

Ve nihayet siz de msdn linke bakabilirsiniz bir xml API gidecekseniz ve aslında sen sadece farklı çözmesi gerekiyor json olarak aynı şekilde alinabilir.

The sample code for API 2.0 is on MSDN but we do not have the complete PHP code sample out yet. A first code sample (very similar to the one in the answer you already got) in included in the blog post on the Live Search Developer Blog

Live Search hizmeti 1.1 ve 2.0 hem de bundan etkilenecek gibi görünüyor - bazı issues with SOAP PHP 5.2.6 şu vardır farkında olabilir. Basit çözüm başka bir arayüz kullanmak için (JSON veya XML)