Возможные проблемы с кодировкой URL

У меня есть два HTTP-запроса, которые производят один и тот же вывод CSV, когда я делаю запросы через веб-браузер. Я опустил первую часть параметров URL обоих запросов, поскольку они одинаковы. Он изменяет только последний параметр, который вы можете видеть ниже:

Запрос А:

https://csv.business.tomtom.com/extern?...[other parameters]...&range_pattern=d-1

Запрос Б:

https://csv.business.tomtom.com/extern?...[other parameters]...&rangefrom_string=01/04/2016 00:00:01&rangeto_string=01/04/2016 23:59:59

CSV-вывод

"start_time","end_time","distance","triptime","operatingtime","standstill","tours","fuel_usage"
"01/04/2016 09:27:39","01/04/2016 17:25:51","293121","15187","28692","2759","4","21.024"

Однако, когда я делаю запросы через приложение rails, я получаю сообщение об ошибке с запросом B. Запрос A в порядке.

Ошибка:

CSV::MalformedCSVError
...
Illegal quoting in line 1.
...
@tripsSummary = CSV.parse(summaryResponse.to_s)

Это ответы HTTP:

Ответ А

#<HTTP::Response/1.1 200 OK {"Access-Control-Allow-Origin"=>"*", "Access-Control-Allow-Methods"=>"GET", "Access-Control-Max-Age"=>"3600", "Access-Control-Allow-Headers"=>"Origin, X-Requested-With, Content-Type, Accept", "Content-Type"=>"text/comma-separated-values;charset=UTF-8", "Date"=>"Sat, 02 Apr 2016 19:16:04 GMT", "Connection"=>"close", "Transfer-Encoding"=>"chunked"}>

Ответ Б

#<HTTP::Response/1.1 200 OK {"Connection"=>"close", "Cache-Control"=>"no-cache", "Content-Type"=>"text/html; charset=iso-8859-1", "Pragma"=>"no-cache", "Content-Length"=>"108"}>

Вопросы

  1. Является ли запрос B искаженным?
  2. Почему в браузере работает, а в приложении нет?
  3. Есть ли проблема с кодировкой в ​​параметре rangefrom_string=04/01/2016 00:00:01?

person Lut    schedule 02.04.2016    source источник


Ответы (1)


Вероятно, вам следует избегать пробелов как %20 в параметрах range_from и range_to. Я не знаю, как это сделать в Ruby, но этот вопрос выглядит хорошим началом.

Браузер, вероятно, автоматически экранирует URL-адреса, поэтому вы получаете правильные ответы.

person Jonathan    schedule 02.04.2016