2016-11-02 54 views
0

我有一個使用httparty的請求設置,並且希望不會發生URI編碼。我已閱讀,有可用使用httparty時不要URI編碼

query_string_normalizer proc { |query| 
    query.map do |key, value| 
    value.map {|v| "#{key}=#{v}"} 
    end.join('&') 
} 

一個類的方法,但我不確定如何在我的當前設置使用此

url = 'https://url/here/report.json?' 
query = { 'param1' => '125894', 
      'param2' => 'yesterday', 
      'param3' => 'about', 
      'param4' => 'client', 
      'parameters' => 'ns_ti:*', 
      'user' => ENV['USERNAME'], 
      'password' => ENV['PASSWORD'] 
} 
response = HTTParty.get(url, query: query) 
results = JSON.parse(response.body) 

這裏的問題是,parameters被編碼和被髮送爲「 ns_ti%3A%2A」,我想,以避免

如果有人可以幫助這將是非常讚賞

感謝

回答

1

爲HTTParty製作自己的包裝器,並將proc傳遞給覆蓋URI編碼的規範器。

app/config/intializers/rich_lewis_http.rb 

class RichLewisHttp 

    include HTTParty 

    query_string_normalizer proc { |query| 
    query.map do |key, value| 
     [value].flatten.map {|v| "#{key}=#{v}"}.join('&') 
    end.join('&') 
    } 

end 

然後你就可以做...

response = RichLewisHttp.get(url, query: query) 
results = JSON.parse(response.body) 
+0

啊我明白了,謝謝你這麼多..喜歡學習新的東西 – Richlewis

+0

似乎越來越'未定義的方法地圖爲「125894」:String' – Richlewis

+0

關於這個的任何想法? – Richlewis