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"

2 番目の URL は、直接アクセスすると問題なく動作します: http://www.gis.leg.mn/mapserver/districtsxml/geocode.php?location=Mankato%20MN

2 番目の yql クエリをエンコードする方法についてのアイデアはありますか? 最終的には、yql コンソール内だけでなく、URL を介して 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

末尾のaddress=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 に答える