使用Net :: HTTP,如何存储您查询的网址?

时间:2013-08-29 19:21:58

标签: ruby net-http

require 'net/http'
require 'uri'

@url = 'http://foobar.com'
@query_string = {foo1: 'bar1', foo2: 'bar2'}

@post_data = Net::HTTP.post_form(URI.parse(@url), @query_string)
@request = # ? How can I get the request URL + query?
@response = @post_data.body

有谁知道如何获取您查询的实际网址,而不仅仅是响应?

即。我想将它存储在变量中以记录发送的内容:

http://foobar.com?foo1=bar1&foo2=bar2

3 个答案:

答案 0 :(得分:0)

它没有从响应本身获得它(我认为没有办法用net / http做到这一点),但你可以通过这样做获得你想要的变量:

@request = URI.parse(@url).tap{|x|x.query=URI.encode_www_form(@query_string)}.to_s
# => "http://foobar.com?foo1=bar1&foo2=bar2"

答案 1 :(得分:0)

我相信你想看看Ruby的URI模块:

http://www.ruby-doc.org/stdlib-2.0/libdoc/uri/rdoc/URI.html

不确定,但你可能会得到类似的东西:

query_string = URI.encode_www_form(@query_string).to_s
record_of_uri = "#{@url}/?#{query_string}"

答案 2 :(得分:0)

注意到帖子请求没有在网址中发送它的参数,按照描述撰写@request使用:

@request = URI.escape(@url + '?' + URI.encode_www_form(@query_string))