浏览 2719 次
锁定老帖子 主题:ruby 解释 url 上的 get 参数
精华帖 (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" 大家看看如果有看不明白的,我可以再解释更详细些。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-12-04
url = http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A
中的?后面的就相当于一个form表单的get方法。可以通过params[:X]传过去的。 当然你要在许多页面使用的话,可以存到session中,也不需要这个get方法了 |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |