为什么我的Bing搜索API新闻返回空字符串?
我订阅了WindowsAzure网站上的免费Bing搜索API。我想做的是在我的网站上添加一个面板,使用纯客户端代码(javascript)来查询Bing搜索Api的新闻结果,我想按相关性排序 为了实现这一点,我找到了这篇有趣的文章,其中讨论了如何用YQL(Yahoo查询语言)存储身份验证信息,并将其用作代理来查询Bing搜索API,网址为: 下面是我所做的: 1) 开发一个YQL开放数据表,其中包含我的Bing键和一个查询参数。以下是XML代码:为什么我的Bing搜索API新闻返回空字符串?,api,rest,search,yql,bing,Api,Rest,Search,Yql,Bing,我订阅了WindowsAzure网站上的免费Bing搜索API。我想做的是在我的网站上添加一个面板,使用纯客户端代码(javascript)来查询Bing搜索Api的新闻结果,我想按相关性排序 为了实现这一点,我找到了这篇有趣的文章,其中讨论了如何用YQL(Yahoo查询语言)存储身份验证信息,并将其用作代理来查询Bing搜索API,网址为: 下面是我所做的: 1) 开发一个YQL开放数据表,其中包含我的Bing键和一个查询参数。以下是XML代码: <?xml version="1.0"
<?xml version="1.0" encoding="UTF-8" ?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
<meta>
<sampleQuery>
select * from {table} where query="washington"
</sampleQuery>
</meta>
<bindings>
<!-- SearchResponse.News.RelatedSearches.NewsRelatedSearch -->
<select produces="json">
<urls><url>https://a889dc2f-d0d4-4d16-9f4e-401c750deb04:IFU5P1aw5HAFJsMgOoxSyAAQyAh+m5asVkEq3GG9xIU@api.datamarket.azure.com/Bing/Search/v1/Composite?Sources=%27news%27</url></urls>
<inputs>
<key id="Query" default="'new york bonds'+NewsCategory='rt_Business'" paramType="query" />
</inputs>
</select>
</bindings>
</table>
啊哦。。。我们犯了第一个错误。YQL控制台吃掉它并抛出“无效的JSON文档”。好的,所以我认为控制台不知道如何解析这个查询
好的,那么让我们使用RESTURL来执行查询。网址是:
https://query.yahooapis.com/v1/public/yql?q=use%20%22store%3A%2F%2F6sVu1WUPgFrgFcOv1bH81U%22%20as%20T%3B%20select%20*%20from%20T%20where%20Query%3D%22%27Texas%20bonds%27%26NewsCategory%3D%27rt_Business%27%22%3B&format=json&diagnostics=true
太好了!但这里发生了一些有趣的事情。生成的JSON字符串中的诊断将显示:
“无法从存储器中读取…不是有效的存储器地址。”
我不在乎,只要我有一个好的JSON字符串,我就不在乎。但问题就出在这里。尝试为此查询使用生成的REST URL:
结果是一个空字符串(具有相同的存储url错误)。
为什么?!这是完全相同的查询,但它只是根据相关性而不是日期对新闻结果进行排序
有人知道这到底是怎么回事吗
提前感谢您抽出时间,非常感谢
另外,我试着输入其他密钥id,以使XML代码看起来更好,但这总是会使查询出错。请让我知道,如果你能得到这个工作,我将永远爱你
您认为可能必须使用OAuth来完成吗
https://query.yahooapis.com/v1/public/yql?q=use%20%22store%3A%2F%2F6sVu1WUPgFrgFcOv1bH81U%22%20as%20T%3B%20select%20*%20from%20T%20where%20Query%3D%22%27Texas%20bonds%27%26NewsCategory%3D%27rt_Business%27%22%3B&format=json&diagnostics=true
use "store://6sVu1WUPgFrgFcOv1bH81U" as T;
select * from T where Query="'Texas bonds'&NewsCategory='rt_Business'&NewsSortBy='Relevance'";