【发布时间】:2014-10-15 19:32:17
【问题描述】:
我正在构建一个 YahooFinance Api,但在尝试使用开放 URI 时总是碰壁。
代码:
uri = ("http://ichart.finance.yahoo.com/table.csv?s=#{URI.escape(code)}&a=#{start_month}&b=#{start_day}&c=#{start_year}&d=#{end_month}&e=#{end_day}&f=#{end_year}&g=d&ignore=.csv")
puts "#{uri}"
conn = open(uri)
错误:
`split': bad URI(is not URI?): http://ichart.finance.yahoo.com/table.csv?s=%255EIXIC&a=00&b=1&c=1994&d=09&e=14&f=2014&g=d&ignore=.csv} (URI::InvalidURIError)
我尝试了URI.unescape(code),它将code 输出为^IXIC,以及留下任何URI 方法,code 将作为%5EIXIC 出现。
在阅读堆栈溢出后,我尝试了这两种方法均无济于事:
uri = URI.parse(URI.encode(url.strip))
safeurl = URI.encode(url.strip)
即使查看了另一个 ruby yahoo-finance gem here 的代码,我似乎也找不到解决方案。任何帮助是极大的赞赏。谢谢
编辑:当我用单引号手动输入网址时,我可以使用open(uri)。双引号(用于插入 ruby 对象)是否在这里起作用?
【问题讨论】:
-
为什么
d&ignore=.csv后面多了一个}?删除它然后再试一次? -
抱歉,粘贴时出现这种情况。我已在编辑中将其删除。
标签: ruby http character-encoding yahoo-finance open-uri