Problem med url-kodning av hållplatsnamn
Hej,
Vi har ett problem med url-kodningen av vissa busshållplatser. Så här är det:
Vår webbsajt (som är under utveckling) hämtar koordinaterna till busshållplatser via Reseplanerarens Platsuppslag-metod. Det fungerar för det mesta men inte i dessa två fall:
Långstorp (Höör kn)
Länghult (Höör kn)
Om vi matar in namnen i Trafiklab-konsolen kommer rätt hållplatser tillbaka.
Men när de skickas från webbsajten får vi helt andra hållplatser i retur. Vi använder Asp.Net C#-metoden Server.UrlEncode för att koda hållplatsnamnen, och då ser url-en för den första hållplatsen ovan ut så här:
https://api.resrobot.se/v2/location.name.xml?key=[vår api-nyckel]&input=L%c3%a5ngstorp+(H%c3%b6%c3%b6r+kn)&maxNo=1&lang=sv
I Api-dokumentationen för input-parametern anges som exempel att "Luleå" ska URL-encodas till "Lule%C3%A5". Detta verkar C#-metoden uppfylla, men något är uppenbarligen fel någonstans.
Det kan nämnas - som ett exempel på motsatsen - att hållplatsen "Sövde by (Sjöbo kn)" returneras korrekt efter att ha url-kodats med ovannämnda metod. Så här ser den url-en ut:
https://api.resrobot.se/v2/location.name.xml?key=[vår api-nyckel]&input=S%c3%b6vde+by+(Sj%c3%b6bo+kn)&maxNo=1&lang=sv
Tacksam för tips om vad som kan vara felet.
/Jan
Hej Jan
Ursäkta det sena svaret. När jag använder Chrome och slår med de den första url:en så får jag tillbaka en hållplats. Så kan inte återskapa ditt problem. Skulle du kunna kolla om problemet fortfarande kvarstår?
Med vänliga hälsningar
Daniel Törbacka
Hej Daniel,
Jag har kollat, och problemet återstår. Även i Chrome. Ett resultat genereras men det är, som tidigare, felaktigt:
Första url-en, som borde returnera data om Långstorp (Höör kn), returnerar Ljungstorp Ljungstorpsgå (Höör kn). Och andra url-en - den för Länghult (Höör kn) - returnerar Lilla Långhult (Mönsterås kn).
Det som förbryllar mig mest är att den tredje url-en, som jag nämner i inlägget, fungerar. Har nämligen svårt att se någon principiell skillnad mellan denna och de två som inte funkar.
Hoppas du kan hjälpa oss att lösa mysteriet.
/Jan
Hej Jan
Nu har jag efterforskat i det lite mera och hittat problemet.
Man kan specificera formatet på två sätt, antingen via location.name.xml eller som en parameter. Om man använder sig utav fall 1 så kommer vår server att redirekta dig till fall 2.
I den här redirekten så blir url:en utsatt för en till encoding. Det medför att sökparamtern ändras till detta: L%25c3%25a5ngstorp%2b(H%25c3%25b6%25c3%25b6r%2bkn) vilket gör fel träffar.
https://api.resrobot.se/v2/location.name.xml?key=[vår api-nyckel]&input=L%c3%a5ngstorp+(H%c3%b6%c3%b6r+kn)&maxNo=1&lang=sv
https://api.resrobot.se/v2/location.name?key=[vår api-nyckel]&input=L%c3%a5ngstorp+(H%c3%b6%c3%b6r+kn)&maxNo=1&lang=sv&format=xml
Vi kommer jobba på att fixa buggen med redirect. Just nu skulle du kunna använda dig utav fall 2 för att få korrekt data tillbaka.
Med vänliga hälsningar
Daniel Törbacka
Stort tack för hjälpen, Daniel. Alternativ 2 fungerar alldeles utmärkt :-)