Пример API поиска изображений Bing v5.0 для переполнения стека

Я безуспешно пытаюсь получить некоторые результаты, используя 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?

1

Решение

РЕШИТЬ

Благодаря подсказке Вадима я изменил способ отправки заголовков, и теперь вывод является результатом в кодировке 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
3

Другие решения

Попробуйте использовать 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;
1

Вот мой рабочий код ..
Замените ******** на ваш ключ подписки 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);
}
}
0