Ruby - 无效的URI消息

时间:2012-03-11 22:44:01

标签: ruby 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:错误的URI(不是URI?):

我该怎么办?

2 个答案:

答案 0 :(得分: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 :(得分:1)

您是否尝试使用CGI::escape(str)对字符串进行网址编码?