У меня есть следующий код
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, в результате чего API mapquest отвечает недопустимым ключ (из-за кодировки, как я пробовал с почтальоном, и он работает)
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. Я знаю, что могу использовать библиотеку mapquest, которая опирается на гем restclient, но, поскольку я потратил некоторое время на ее кодирование, было бы неплохо, как заставить ее работать с faraday