我尝试使用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的基本示例?
答案 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);
}
}