Till senaste kommentaren
Detta inlägg är gammalt och kan innehålla inaktuell information.

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

Kommentarer

  • 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

    Team Trafiklab
  • 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.

    1. 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

    2. 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

    Team Trafiklab
  • Stort tack för hjälpen, Daniel. Alternativ 2 fungerar alldeles utmärkt :-)

Kommentera eller skriv ett nytt inlägg

Ditt namn och inlägg kan ses av alla. Din e-post visas aldrig publikt.