gpt4 book ai didi

ruby-on-rails - 如何避免法拉第请求编码获取参数?

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:38 28 4
gpt4 key购买 nike

我有以下代码

conn = Faraday.new(:url => 'http://www.mapquestapi.com') do |faraday|
faraday.response :logger # log requests to STDOUT
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
faraday.options.params_encoder = Faraday::FlatParamsEncoder
end

response = conn.get do |req|
req.url '/geocoding/v1/batch'
req.params['key'] = 'xxxxx%7xxxxxxxxx%2xxxx%3xxxx-xxxx'
req.params['location'] = addresses[0]
end

不幸的是,key 参数以这种方式被编码,如日志中所示 key=xxxxx%257xxxxxxxxx%252xxxx%253xxxx-xxxx,导致 mapquest API 响应使用无效 key (由于我尝试使用 postman 进行的编码并且它有效)

I, [2014-01-22T19:16:17.949640 #93669]  INFO -- : get http://www.mapquestapi.com/geocoding/v1/batch?key=xxxxx%257xxxxxxxxx%252xxxx%253xxxx-xxxx&location=1047+East+40th+Avenue%2C+Vancouver%2C+BC+V5W+1M5%2C+Canada
D, [2014-01-22T19:16:17.949778 #93669] DEBUG -- request: User-Agent: "Faraday v0.9.0"
accept-encoding: ""
I, [2014-01-22T19:16:19.038914 #93669] INFO -- Status: 200
D, [2014-01-22T19:16:19.039043 #93669] DEBUG -- response: server: "Apache-Coyote/1.1"
set-cookie: "JSESSIONID=AD0A86636DAAD3324316A454354F; Path=/; HttpOnly"

关键参数应该在不编码 % 的情况下发送,我怎样才能避免这种情况不会发生,我还没有找到任何参数来改变这种行为

我使用的是 Faraday 0.9.0,ruby 2.0。我知道我可以使用依赖于 restclient gem 的 mapquest 库,但由于我已经花了一些时间对此进行编码,所以如何让它与 faraday

一起工作会很好

最佳答案

这只是部分答案:

可以创建自己的 param_encorder 来避免值字段被转义。这在这里使用(参见方法 build_exclusive_url)ruby-2.0.0-p247@zingtech/gems/faraday-0.9.0/lib/faraday/connection.rb

class DoNotEncoder
def self.encode(params)
buffer = ''
params.each do |key, value|
buffer << "#{key}=#{value}&"
end
return buffer.chop
end
end

conn = Faraday.new(:url => 'http://www.mapquestapi.com') do |faraday|
faraday.response :logger # log requests to STDOUT
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
#faraday.options.params_encoder = Faraday::FlatParamsEncoder
faraday.options.params_encoder = DoNotEncoder
end

但是!!查询字符串未通过查询文本检查(请参阅 check_query 方法)ruby-2.0.0-p247/lib/ruby/2.0.0/uri/generic.rb

我怀疑它因其他原因而失败。该站点是否使用 CSRF,或者您是否需要捕获 cookie 并将其包含在您的请求中。

如果您需要使用 CSRF,请查看 https://gist.github.com/chrisZingel/9042812代码示例。

关于ruby-on-rails - 如何避免法拉第请求编码获取参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283414/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com