我怎样才能浏览这个查询字符串

时间:2014-05-02 12:55:58

标签: ruby-on-rails ruby url query-parameters

我将此请求发送到服务:

get_store_data = Typhoeus::Request.new("http://localhost:3000/api/v1/store?service=#{(proxy_ticket.service)}&ticket=#{proxy_ticket.ticket}")

proxy_ticket.service解析为此字符串"http://localhost:3000/api/v1/store"。发送请求时,此字符串将转义为:

service=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fv1%2Fstore

问题是另一端的服务期望服务参数为"http://localhost:3000/api/v1/store"如何防止此查询字符串被转义?

2 个答案:

答案 0 :(得分:5)

另一方应该是没有使用参数。如果您仍然想知道如何操作,here is the method uri.unescape就像这样使用:

require 'uri'

enc_uri = URI.escape("http://example.com/?a=\11\15")
p enc_uri
# => "http://example.com/?a=%09%0D"

p URI.unescape(enc_uri)
# => "http://example.com/?a=\t\r"

如果你想快速浏览一个uri(并且不想出于某种奇怪的原因而打开一个代表,比如可能会侮辱你的荣誉或其他什么。)你可以尝试this site < / p>

答案 1 :(得分:1)

你做不到。它应该解码这个参数的“另一面”(很可能是这样)。

例如,rails会自动执行此编码。您可以通过将某些操作更改为raise params.pretty_inspect来检查它,并使用额外的参数your/action/route?service=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fv1%2Fstore调用它。你会看到params包括service: http://localhost:3000/api/v1/store

如果这对你不起作用,你需要与另一方取得联系,以便他们实现这一点。没有其他方法可以在获取网址中传递网址。