문제

나는 Live Search 2.0을 사용하려고 노력하고 있지만 간단한 예제조차도 작동하지 않는 것 같습니다. Microsoft에는 1.1에 대한 예제 코드 만 가지고 있으며 해당 버전에 대한 AppIds를 제공하지 않습니다.

내가 시도하는 것은 다음과 같습니다.

<?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
도움이 되었습니까?

해결책

2.0의 적절한 SOAP API URL을 사용하여 시작할 수 있습니다. 지금은 "http://api.search.live.net/search.wsdl?appid=yourappid"에서 가져온 (http://msdn.microsoft.com/en-us/library/dd250965.aspx )

PHP와 함께 새로운 JSON API를 사용할 수도 있습니다.

$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과 본질적으로 동일한 방식으로 가져올 수 있습니다.

다른 팁

API 2.0의 샘플 코드는 MSDN에 있지만 아직 완전한 PHP 코드 샘플이 없습니다. 블로그 게시물에 포함 된 첫 번째 코드 샘플 (이미 얻은 답변과 매우 유사) 라이브 검색 개발자 블로그에서

당신은 현재 일부가 있다는 것을 알고있을 것입니다 비누 문제 PHP 5.2.6에서 - 라이브 검색 서비스는 1.1과 2.0의 영향을받는 것으로 보입니다. 가장 간단한 해결 방법은 다른 인터페이스 (JSON 또는 XML)를 사용하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top