如何在YQL url中编码空格?

时间:2012-09-19 17:24:16

标签: javascript web-services yql

我试图让一些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控制台内,但我认为控制台是一个让它运行的好地方。

1 个答案:

答案 0 :(得分: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问题。查看YQL request not working when using URL为什么我怀疑它不是YQL问题。

`