2017-04-05 79 views
1

我试图让搜索结果按照api documentationBing搜索API - 在JSON响应缺失的网页属性

以下是我在PHP

require_once 'HTTP/Request2.php'; 

    $api_key = 'my_bing_search_api_key'; 
    $url_encoded_keyword = urlencode('animation concepts and tutorials'); 


    $request = new \Http_Request2('https://api.cognitive.microsoft.com/bing/v5.0/search');  
    $headers = [ 
     'Ocp-Apim-Subscription-Key' => $api_key 
    ];   
    $request->setHeader($headers); 

    $url = $request->getUrl(); 

    $parameters = [ 
     'q' => $url_encoded_keyword, 
     'count' => '10', 
     'offset' => '0', 
     'safesearch' => 'Strict', 
    ); 

    $url->setQueryVariables($parameters); 

    $request->setMethod(\HTTP_Request2::METHOD_GET); 

    $request->setBody("{body}"); 

    $search_result = null; 
    try { 
     $response = $request->send(); 
     $search_results = json_decode($response->getBody(), true); 
     return $search_results; 
    } catch (HttpException $ex) {    
     return []; 
    } 

我得到回应,但它写没有webPages属性。它只有_type,rankingResponse,relatedSearches和videos属性。 我在api console中测试过相同的请求。在那里我得到了json响应中的webPages属性。

任何想法可能是什么原因,我没有得到PHP的网页,但在微软的API测试网站的作品?

回答

1

从代码片段中,您将关键字传递给Bing网页搜索API后进行编码。
$ url_encoded_keyword = urlencode('animation concepts and tutorials');

$parameters = [ 
    'q' => $url_encoded_keyword, 
    'count' => '10', 
    'offset' => '0', 
    'safesearch' => 'Strict', 
); 

尝试不编码关键字。从他们的API testing console,对于相同的关键字的HTTP请求将显示为

https://api.cognitive.microsoft.com/bing/v5.0/search?q=animation 概念和教程&计数= 10 &偏移= 0 & MKT = EN-US &安全搜索=中度

+0

除去进行urlencode( )工作。 – smk