2014-11-04 4 views
3

На данный момент я могу выполнять свои поиски только на основе входа в datamarket azure.Как мне вернуть результаты JSON от BING Search Engine API

Полученные результаты отформатированы в форме таблицы, и я не хочу возвращать их в формате JSON.

Ссылка отображается после получения результатов, но когда эта ссылка вставлена ​​в URL-адрес браузера, для нее требуется имя пользователя и пароль.

Пример возвращаемого URL https://api.datamarket.azure.com/Bing/Search/v1/Web?Query=%27car%27

Там не раньше АНИ с помощью REST для него, но теперь только возвращать ошибки и больше не работает.

Есть ли способ использовать этот BING API и получить его возвратные запросы?

Возвращенная ошибка после попытки попытки входа в систему azure Тип авторизации, который вы предоставили, не поддерживается. Только Basic и OAuth поддерживаются

ответ

7

Вы должны удалить v1 с вашего URL, а также добавить $format=json к концу вашего запроса, как указано в schema guide:

https://api.datamarket.azure.com/Bing/Search/Web?Query=%27Xbox%27&$format=json 

Чтобы получить ссылку на работу, вы должны предоставить ему свои хешированные полномочия, чтобы получить это, выполните следующие действия:

  1. Войдите в Лазурный рынок.
  2. Перейдите на страницу search api listing
  3. Нажмите на ссылку "Изучите этот набор данных" (только если вы вошли в систему).
  4. Как только она открывается, на верхней нажмите на кнопку «Показать» рядом с «Primary Key Account» enter image description here
  5. Сохранить это Хешированное значение и использовать его в коде в качестве аутентификации дайджеста.
+0

он все еще требует бревна от меня, который, когда я введенный моего HOTMAIL счета он не работает. Когда я продолжить нажимать на его отмены возвращает меня: Возвращается Ошибка после неудачной попытки войти в лазурных Тип авторизации вы предоставили не поддерживается. Поддерживаются только Basic и OAuth bing – user3809384

+0

you da man !! спасибо yo – user3809384

+1

Для аутентификации ... используйте пустой логин и основной ключ учетной записи в качестве пароля. – pista329

3

Как работает новый Bing API, но вы можете использовать его без входа в систему с помощью base64, кодирующего ваш AppId, а затем устанавливая его как «базовую» авторизацию в заголовках. Я получил идею от this answer on stackoverflow. Фокус в том, что вам нужно добавить двоеточие в начале вашего AppId перед его кодировкой base64.

Вот рабочий пример, который я сделал для поиска Bing и возвращает случайное изображение из результатов. Если вы хотите, чтобы заставить его работать, просто добавьте свой собственный AppId:

'use strict'; 
 

 
$(document).ready(function() { 
 
    //Declare variables 
 
    var $searchButton = $('#searchButton'); 
 
    //add a colon to the beginning of your AppId string 
 
    var appId = ':TZYNotARealAppId'; 
 

 
    //Function to get images 
 
    function getImage() { 
 
    //base64 encode the AppId 
 
    var azureKey = btoa(appId); 
 
    //get the value from the search box 
 
    var $searchQuery = $('#searchBox').val(); 
 
    //Create the search string 
 
    var myUrl = 'https://api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27image%27&$top=50&$format=json&Query=%27' + $searchQuery + '%27'; 
 
    //Make post request to bing 
 
    $.ajax({ 
 
     method: 'post', 
 
     url: myUrl, 
 
     //Set headers to authorize search with Bing 
 
     headers: { 
 
     'Authorization': 'Basic ' + azureKey 
 
     }, 
 
     success: function(data) { 
 
     //Insert random image in dom 
 
     var randomIndex = Math.floor(Math.random() * 50); 
 
     var imgLink = '<img width="500px" src="' + data.d.results[0].Image[randomIndex].MediaUrl + '" />'; 
 
     $('#output').html(imgLink); 
 
     }, 
 
     failure: function(err) { 
 
     console.error(err); 
 
     } 
 
    }); 
 
    }; 
 
    //Trigger function when button is clicked 
 
    $searchButton.click(function(e) { 
 
    e.preventDefault(); 
 
    getImage(); 
 
    }); 
 
});
<html> 
 

 
<head> 
 
    <title>Image search widget</title> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
 
    <meta name="description" content="test search widget" /> 
 
</head> 
 

 
<body> 
 
    <main> 
 
    <form> 
 
     <input id="searchBox" type="text" type="submit" name="searchBox" required/> 
 
     <button id="searchButton" type="submit">Get Image</button> 
 
    </form> 
 
    <div id="output"></div> 
 
    </main> 
 
    <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 
 
    <script src="./js/search.js"></script> 
 
</body> 
 

 
</html>

+0

Этот метод все еще работает. Я создал скрипку на случай, если кто-то захочет экспериментировать. https://jsfiddle.net/skd/28toz2n2/ –

Смежные вопросы