所以我试图在http://www.teamliquid.net/video/streams/?filter=live&xml=1使用API设置一个YQL表,但有一些问题。
这是我的表定义:
<?xml version="1.0" encoding="UTF-8"?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
<meta>
<author>TL.net</author>
<description>TL.net's streams</description>
<documentationURL>none</documentationURL>
<sampleQuery>select * from {table}</sampleQuery>
</meta>
<bindings>
<select itemPath="streamlist" produces="XML">
<urls>
<url>http://www.teamliquid.net/video/streams/?xml=1</url>
</urls>
<inputs>
<key id="filter" type="xs:string" paramType="query" />
</inputs>
</select>
</bindings>
</table>
运行use "store://q5awkFLmEqteFVOTUJbQ6h" as tl; select * from tl where filter="live"
会产生以下错误:
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
yahoo:count="0" yahoo:created="2012-02-13T22:14:48Z" yahoo:lang="en-US">
<diagnostics>
<publiclyCallable>true</publiclyCallable>
<url execution-start-time="1" execution-stop-time="33"
execution-time="32" proxy="DEFAULT"><![CDATA[store://q5awkFLmEqteFVOTUJbQ6h]]></url>
<url execution-start-time="35" execution-stop-time="232"
execution-time="197" http-status-code="406"
http-status-message="Not Acceptable" proxy="DEFAULT"><![CDATA[http://www.teamliquid.net/video/streams/?xml=1&filter=live]]></url>
<user-time>232</user-time>
<service-time>258</service-time>
<build-version>25247</build-version>
</diagnostics>
<results/>
</query>
我真的无法弄清楚它为什么不起作用。
答案 0 :(得分:1)
在调试语句中,您可以看到YQL正在从源URL读取:http://www.teamliquid.net/video/streams/?xml=1&filter=live
,但是正在接收HTTP 406 Not Acceptable错误消息。
HTTP 406旨在涵盖服务器无法以任何请求的(Accept标头)格式进行响应的情况。我不知道在这种情况下如何应用,但teamliquid.net源提到了以下内容:
需要gzip编码,请发送有效的用户代理,其中包含您的应用程序/站点的名称和联系信息。此页面和XML每五分钟更新一次,请不要每五分钟更频繁地进行一次轮询,否则您可能会被IP禁止。如果您有任何疑问,请PM PMCH。
我怀疑这是两件事之一: