gpt4 book ai didi

java - 为 YQL 生成 URL

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:05 27 4
gpt4 key购买 nike

我正在开发一个java项目,在该项目中我需要生成url来获取数据,即来自雅虎的开盘价、最低价、最高价、收盘价等

类似帖子here建议使用 java.net.URLEncoder 中的 URLEncoder.encode(query, "UTF-8") 但这会生成不同格式的 url。

示例:对于此查询

select * from yahoo.finance.historicaldata where symbol in ("YHOO","AAPL") and startDate = "2014-01-01" and endDate = "2014-02-01"

它给出了网址:

http://query.yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.historicaldata+where+symbol+in+%28%22YHOO%22%2C%22AAPL%22%29+and+startDate+%3D+%222014-01-01%22+and+endDate+%3D+%222014-02-01%22&format=json

而我需要这种格式的网址

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.historicaldata%20where%20symbol%20in%20(%22YHOO%22%2C%22AAPL%22)%20and%20startDate%20%3D%20%222014-01-01%22%20and%20endDate%20%3D%20%222014-02-01%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=

请建议我如何将此查询转换为上述网址。

谢谢

最佳答案

这个问题在这里得到解答Java equivalent to JavaScript's encodeURIComponent that produces identical output? .

该解决方案提供 EncodingUtil 类的源代码。您可以像这样使用该类(对于您的具体示例):

String query = "select * from yahoo.finance.historicaldata where symbol in (\"YHOO\",\"AAPL\") and startDate = \"2014-01-01\" and endDate = \"2014-02-01\"";

System.out.println("https://query.yahooapis.com/v1/public/yql?q="+EncodingUtil.encodeURIComponent(query)+"&format=json&diagnostics=true&env="+EncodingUtil.encodeURIComponent("store://datatables.org/alltableswithkeys")+"&callback=");

与您的问题无关,请小心使用select *。如果 Yahoo 添加或删除字段,则处理返回的 JSON 对象的代码可能会中断。

关于java - 为 YQL 生成 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com