Posts

Showing posts with the label NS

NS API: stationslijst naar een array

Om de lijst met stations direct uit het geheugen te kunnen gebruiken plaats ik twee arrays: codes[] en names[] in mijn code. Het converteren van de api xml output naar twee plaintext arrays was een aardige klus die steeds vaker terugkwam, omdat de NS nieuwe stations bouwde. Ik besloot om een script te schrijven. Het was zonder twijfel veel mooier om een parser in een mooie programmeertaal te schrijven, maar de oefening met pipes en de commandos sed, awk, grep, paste en cut was leuk. Het script converteert uppercase stationscodes naar lowercase, internationale karakters (umlaut etc.) naar normale karakters en haalt enkele stations zoals "Utrecht" weg omdat er ook al een "Utrecht Centraal" bestaat. Ik besloot verder om namen als Munchen te schrijven als Munchen (zonder umlaut) om het typen te vergemakkelijken. #!/bin/bash cat ns_api_stations.xml | grep code | sed s/\<[\/a-z]*\>//g | sed 's/^[ \t]*//' | awk '{print "\"" tolow...

NS api - hij is er!

Al enige tijd gingen er geruchten dat er een NS treinreizigers-api zou komen. Voor mijn Android-app SnelTrein deed ik wat onderzoek naar de concurrentie. Daartoe gebruikte ik mijn Desire Z op mijn eigen wifi accesspoint, via een oude hub verbonden naar de router. Door de computer daarna aan de hub te koppelen is het mogelijk het netwerkverkeer vanaf de telefoon af te luisteren (ik deed dat op mijn Ubuntu machine met WireShark). Wat blijkt: SnelTrein gebruikt m.ns.nl (dat wist ik natuurlijk al) ActuTrein gebruikt treinfan.waarisdetrein.nl TreinTijden lite gebruikt m.ns.nl NS ReisPlanner Xtra gebruikt  webservices.ns.nl Als u nu naar http://webservices.ns.nl/ gaat dient u een wachtwoord in te voeren. Helaas voor de NS gebruikt hun applicatie geen https, waardoor het wachtwoord dat de Android applicatie gebruikt ook af te luisteren is. De gebruikersnaam "android" en wachtwoord "mvdzig" worden open en bloot verstuurd en zijn ook gewoon bruikbaar vanuit uw brows...