【问题标题】:How do I encode spaces in a YQL url?如何在 YQL url 中编码空格?
【发布时间】:2012-09-19 17:24:16
【问题描述】:

我正在尝试让一些 YQL 与 Web 服务一起使用。第一个 sn-p 在 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 控制台中,但我认为控制台是让它工作的好地方。

【问题讨论】:

  • 你试过用encodeURIComponent编码你的查询字符串值吗?
  • 如果我使用 encodeURIComponent() 的结果作为 url 的值,它也会失败。

标签: javascript web-services yql


【解决方案1】:

您在 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

注意到末尾的 address=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 问题。

`

【讨论】:

    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多