Я безуспешно пытаюсь получить некоторые результаты, используя API поиска изображений Bing без компонента HTTP / Request2.php (как используется в официальных примерах).
Я понимаю, что для выполнения очень примитивного вызова нужны только два параметра: 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;
Но это ничего не выводит. Не могли бы вы помочь мне с очень простым примером использования API Bing?
РЕШИТЬ
Благодаря подсказке Вадима я изменил способ отправки заголовков, и теперь вывод является результатом в кодировке 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
Для поиска только портретных изображений с размерами от 200×200 до 500×500 используйте:
q=cats&aspect=Tall&size=Medium
Попробуйте использовать 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;
Вот мой рабочий код ..
Замените ******** на ваш ключ подписки 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);
}
}