2012-03-11 130 views
1

我有一個URI是這樣的:紅寶石 - 無效的URI消息

https://chart.googleapis.com/chart?cht=lc&chd=s:cEAELFJHHHKUju9uuXUc&chco=76A4FB&chls=2.0&chs=220x125&chxt=x,y&chxr=1,0,4&chxl=3:|Jan|Feb|Mar&chxs=2,0000dd,13,-1,t,FF0000&chxp=2,10,35,95&chxtc=1,5,15

我試試這個:

require 'open-uri' 
open "https://chart.googleapis.com/chart?cht=lc&chd=s:cEAELFJHHHKUju9uuXUc&chco=76A4FB&chls=2.0&chs=220x125&chxt=x,y&chxr=1,0,4&chxl=3:|Jan|Feb|Mar&chxs=2,0000dd,13,-1,t,FF0000&chxp=2,10,35,95&chxtc=1,5,15" 

而且我得到以下信息:

URI::InvalidURIError: bad URI(is not URI?):

什麼都要我做?

回答

3

管道導致您的問題。他們必須是percent encoded

您可以解決此通過

uri = "https://chart.googleapis.com/chart?cht=lc&chd=s:cEAELFJHHHKUju9uuXUc&chco=76A4FB&chls=2.0&chs=220x125&chxt=x,y&chxr=1,0,4&chxl=3:|Jan|Feb|Mar&chxs=2,0000dd,13,-1,t,FF0000&chxp=2,10,35,95&chxtc=1,5,15" 
uri.gsub!('|', '%7C') 
open uri 
1

您是否嘗試過使用url編碼字符串CGI::escape(str)

+0

是。如果我這樣做,當我打開它認爲是一個文件,而不是一個URL。 – 2012-03-11 22:59:08