0
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

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

即我想将其存储在一个变量中以记录发送的内容:

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

4

3 回答 3

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"
于 2013-08-29T22:06:29.410 回答
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}"
于 2013-08-30T01:23:47.823 回答
0

请注意,发布请求不会在 url 中发送它的参数,以@request按照描述的用途进行组合:

@request = URI.escape(@url + '?' + URI.encode_www_form(@query_string))
于 2013-08-30T01:27:16.260 回答