2016-04-02 5 views
0

Ich habe zwei HTTP-Anfragen, die dieselbe CSV-Ausgabe erzeugen, wenn ich die Anfragen über den Webbrowser abrichte. Ich habe den ersten Teil der URL-Parameter beider Anfragen weggelassen, da sie identisch sind. Es ändert sich nur die letzten Parameter, die Sie unten sehen können:Mögliche Probleme bei der URL-Codierung

Anfrage A:

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

Anfrage B:

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-Ausgabe

"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" 

Jedoch, wenn ich das machen Anfragen über die Rails-App Ich bekomme eine Fehlermeldung mit Anfrage B. Anfrage A ist OK.

Fehler:

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

Dies sind die HTTP-Antworten:

Antwort A

#<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"}> 

Antwort B

#<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"}> 

Fragen

  1. Ist Anfrage B fehlerhaft?
  2. Warum funktioniert es im Browser und es funktioniert nicht in der App?
  3. Gibt es im Parameterbereich ein Codierungsproblemfrom_string = 01/04/2016 00:00:01?

Antwort

1

Sie sollten wahrscheinlich entkommen Räume als %20 in den range_from und range_to params. Ich weiß nicht, wie man das in Ruby macht, aber this question sieht wie ein guter Anfang aus.

Der Browser entkommt wahrscheinlich URLs automatisch, weshalb Sie dort richtige Antworten erhalten.