目前我只能根据登录数据市场azure进行搜索。
返回的结果以表格格式化,我不会以任何方式将它们以JSON格式返回。
在返回结果后会显示一个链接,但是当该链接粘贴在浏览器的URL部分时,它需要用户名和密码。
返回的网址示例 https://api.datamarket.azure.com/Bing/Search/v1/Web?Query=%27car%27
曾经有一个api使用REST但它现在只返回错误而不再工作。
有没有办法使用这个BING API并检索它的返回查询?
无法尝试登录azure后返回错误 您提供的授权类型不受支持。仅支持Basic和OAuth
答案 0 :(得分:7)
您需要从网址中删除v1
,并在查询结尾添加$format=json
,详见schema guide:
https://api.datamarket.azure.com/Bing/Search/Web?Query=%27Xbox%27&$format=json
要使链接生效,您需要提供散列凭据,为此,请按以下步骤操作:
答案 1 :(得分:3)
新Bing API的工作方式不同,但您可以在不登录的情况下使用它,通过base64编码您的AppId,然后将其设置为标题中的“基本”授权。我从this answer on stackoverflow得到了这个想法。诀窍是你需要在base64编码之前在AppId的开头添加一个冒号。
这是我做的一个工作示例,它搜索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>