0

我正在尝试让一些 YQL 与 Web 服务一起使用。第一个片段在 YQL 控制台中工作 ( http://developer.yahoo.com/yql/console/ )

select * from xml where url="http://www.gis.leg.mn/mapserver/districtsxml/geocode.php?location=Mankato"

当我尝试使用空格添加更复杂的地址时,控制台会给出有关连接失败的错误:

select * from xml where url="http://www.gis.leg.mn/mapserver/districtsxml/geocode.php?location=Mankato%20MN"

如果我直接访问第二个网址,它可以正常工作:http ://www.gis.leg.mn/mapserver/districtsxml/geocode.php?location=Mankato%20MN

关于如何编码第二个 yql 查询的任何想法?最终,我想通过 url 而不仅仅是在 yql 控制台内调用 yql,但我认为控制台将是让它工作的好地方。

4

1 回答 1

2

您在 API 上获得 302 重定向。卷曲了http://www.gis.leg.mn/mapserver/districtsxml/geocode.php?location=Mankato%20MN你可以试试curl -v -L http://www.gis.leg.mn/mapserver/districtsxml/geocode.php?location=MANKATO%20MN

完成卷曲后,检查 302 之后的部分。注意以下几点:

GET /cgi-bin/mapserv?mode=nquery&map=/web/gis/mapserver/districtsxml/demo.map&scale=10000&mapxy=-93.9993996+44.1635775&layer=location&map_location_feature=new&map_location_feature_points=-93.9993996+44.1635775&source=address&address=MANKATO+MN

注意最后的地址=MANKATO+MN?出于某种原因,托管 API 的服务器将空间转换为加号(我不知道为什么)。

无论如何,如果您发出查询select * from xml where url="http://www.gis.leg.mn/mapserver/districtsxml/geocode.php?location=MANKATO%2BMN"(我已经在 Mankato+MN 中编码了 +),那么它应该可以工作。我自己验证了。试试看,让我知道。

最后一点。这似乎不是 YQL 问题。查看使用 URL 时 YQL 请求不起作用,为什么我怀疑它不是 YQL 问题。

`

于 2012-09-19T19:37:12.807 回答