0

我正在尝试使用 Live Search 2.0,但即使是一个简单的示例似乎也不起作用。微软只有 1.1 的示例代码,他们没有提供该版本的 AppID。

这是我正在尝试的:

<?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 在代码中正确指定:我刚刚从这里删除了它。我收到以下错误:

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
4

2 回答 2

2

您可以从使用 2.0.0 的适当的 soap api url 开始。现在是“ http://api.search.live.net/search.wsdl?AppID=YourAppId ”取自(http://msdn.microsoft.com/en-us/library/dd250965.aspx

您还可以将新的 JSON api 与 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
    } 

最后还有一个 xml api,你也可以查看 msdn 链接,它的获取方式与 json 基本相同,你只需要以不同的方式对其进行解码。

于 2008-12-22T02:23:53.930 回答
0

API 2.0 的示例代码在 MSDN 上,但我们还没有完整的 PHP 代码示例。第一个代码示例(与您已经得到的答案中的那个非常相似)包含在Live Search Developer Blog 上的博客文章中

您可能知道目前PHP 5.2.6 中的SOAP 存在一些问题- Live Search 服务似乎在 1.1 和 2.0 中都受到了它的影响。最简单的解决方法是使用另一个接口(JSON 或 XML)

于 2009-01-06T05:15:50.380 回答