【问题标题】:Using Net::HTTP, how can you store the url that you queried?使用 Net::HTTP,你如何存储你查询的 url?
【发布时间】:2013-09-02 09:15:27
【问题描述】:
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

【问题讨论】:

  • 既然是post请求,你的url不就是URI.parse(@url)的返回吗?
  • 我想要除了 url 之外的查询字符串。并且查询变量是一个哈希。
  • 但是因为它是一个 post 请求,所以查询数据不会成为 URL 的一部分。

标签: ruby net-http


【解决方案1】:

它不是从响应本身得到它(我认为没有办法用 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"

【讨论】:

  • 我最终在 ruby​​ on rails 中使用了哈希方法“to_query”。不过感谢您的回答。
【解决方案2】:

我相信你想看看 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}"

【讨论】:

    【解决方案3】:

    请注意,post 请求不会在 url 中发送它的参数,以按照描述的用法编写 @request

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

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多