论坛首页 编程语言技术论坛

ruby 解释 url 上的 get 参数

浏览 2719 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-04  
有一个问题请教各位:
A系统请求B系统的一个接口,其中有一个参数就是一个URL,例如
url = http://192.168.0.5/B/changeresponsible?responsible=ching

我在使用URI.parse的时候可以做到

url = http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A
uri = URI.parse(url)
uri.host # => 192.168.0.5
uri.path # => /B/changeresponsible
uri.query # =>responsible=ching&systemname=A


有什么方法可以得到url上的get参数列表?
例如得到这样的结果:
params["responsible"]="ching"
params["systemname"]="A"

大家看看如果有看不明白的,我可以再解释更详细些。
   发表时间:2007-12-04  
url = http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A
中的?后面的就相当于一个form表单的get方法。可以通过params[:X]传过去的。
当然你要在许多页面使用的话,可以存到session中,也不需要这个get方法了
0 请登录后投票
   发表时间:2007-12-04  
A系统request B系统的一个接口,
其中传递的参数是:
params = {"url"=>"http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A "}


相单于
A:
params = {"url"=>"http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A "}
get "http://www.b.com/convert/get_to_post", params

而B中
def get_to_post
  url = params["url"]
  uri = URI.parse(url)
  explain_query(uri.query)
end

private 
  def explain_query(query_params)
    # systemname=cets&responsible=sj ==> {"systemname"=>"cets","responsible"=>"sj"}
    # only very sample explain, 
    # have not care about special char ,e.g. & = ...
    re = {}
    if query_params.nil? or query_params == ""
      return re # empty ,need not explain
    end
    querys = query_params.split("&")
    querys.each do | query |
      query_arr = query.split("=")
      re[query_arr[0]]=query_arr[1]
    end
    return re
  end


而B中的explain_query 方法就是我自己编写的解释,可是我知道,这个只能处理最简单的,一旦有一些特殊字符(例如:& = ' ) 等,我的就会解释错误。
所以想问问,有没有系统自带的,或者更好的方法来替换explain_query
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics