用于PHP的Bing Image搜索API v5.0示例

时间:2016-09-13 10:16:16

标签: php bing-api

我尝试使用Bing的图片搜索API(没有HTTP / Request2.php组件as used in the official examples),但没有成功。

据我所知,进行非常原始调用的唯一两个必需参数是q,它是查询字符串和subscription key。必须使用标头发送key。环顾四周后,我发现这个非常简单的例子用PHP发送标题:

$sURL = "https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=cats";
$aHTTP = array(
    'Ocp-Apim-Subscription-Key' => 'xxxxxxx',
);
$context = stream_context_create($aHTTP);
$contents = file_get_contents($sURL, false, $context);

echo $contents;

但它没有输出任何东西。您是否可以帮助我使用Bing的API的基本示例?

3 个答案:

答案 0 :(得分:3)

<强>解决

感谢Vadim的提示,我改变了标头的发送方式,现在输出的是Json编码结果。 (请记住添加您的API订阅密钥。)

$sURL = "https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=cats";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sURL); 
curl_setopt($ch, CURLOPT_TIMEOUT, '1'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: multipart/form-data',
    'Ocp-Apim-Subscription-Key: xxxxx'
));
$content = curl_exec($ch);

echo $content;

只是另一个提示。查询过滤器和其他参数的语法从版本更改为版本。例如,以下版本在5.0版中正常工作:

要仅搜索猫的JPEG图像并获得30个结果,请使用:

q=cats&encodingFormat='jpeg'&count=30

仅搜索&#39;肖像&#39;尺寸在200x200和500x500之间的方面图像使用:

q=cats&aspect=Tall&size=Medium

答案 1 :(得分:1)

尝试使用cURL

$sURL = "https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=cats";
$key = "xxxxxxx";


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sURL); 
curl_setopt($ch, CURLOPT_TIMEOUT, '1'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 'ocp-apim-subscription-key:$key');
$content = curl_exec($ch);

echo $content;

答案 2 :(得分:0)

这是我的工作代码.. 用您的bing订阅密钥替换********。

        $sURL = "https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=microsoft-surface&count=6&mkt=en-US";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $sURL); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: multipart/form-data',
            'Ocp-Apim-Subscription-Key: *******************'
        ));
        $contents = curl_exec($ch);
        $myContents = json_decode($contents);
        if(count($myContents->value) > 0) {
            foreach ($myContents->value as $imageContent) {
                echo '<pre/>';
                print_r($imageContent);
            }
        }