Klient kodeeksempler
Web API'et til Danmark web servicen er selvfølgelig dokumenteret, men da det tit er nemmere at forstå et API ved at se noget kode, som anvender API'et, har vi nedenfor givet eksempler på,
hvorledes API'et anvendes fra henholdsvis C#, Java, Ruby, JavaScript og PHP.
Der er ingen af eksemplerne der er baseret på kodegenerering ud fra Xml
skemaerne. Det skyldes at vores erfaringer fortæller os, at denne
programmeringsteknik skaber flere problemer end den løser.
Alle kodeeksempler tager udgangspunkt i en adressesøgning på Danmark web
servicen, som returnere alle adresser i postdistriktet 2400 København NV hvor
kilde er en del af vejnavnet. Søgningen er givet af følgende URL:
http://oiorest.dk/danmark/adresser?postnr=2400&vejnavn=kilde
Søgningen returner et XML dokument, som der kan ses en del af nedenfor:
I det følgende beskrives hvorledes denne adressesøgning implementeres i
følgende programmeringssprog: C#, JavaScript, Java, Ruby og PHP.
C#
Kommunikationen i de to C# eksempler er begge baseret på System.Net klasserne
HttpWebRequest og HttpWebResponse. Til at trække data ud af XML dokumentet er to
beskrevet to måder: dels vha. XPath dels vha. Linq.
XPath
I dette eksempel anvendes klasserne XPathDocument og XPathNavigator fra
System.Xml.XPath bibliotekter til at trække data ud fra det modtagede XML
dokument.
Koden kan downloades her.
XML Linq
Dette eksempel er baseret på Linq mekanismen i .NET 3.5.
Du kan downloade hele eksemplet her.
Java
Java-eksemplet ligger sig meget tæt op ad C# koden.
Vha. URL-klassen læses en stream ind i en DOM-struktur,
og herefter kan de enkelte noder tilgåes som XPaths.
Dette bygger naturligvis på, at man dels ved, at det rent faktisk er en XML-struktur,
som man modtager fra servicen, og dels at man kender de enkelte stier ned gennem DOM-træet.
Eksemplet er derfor - akkurat som de andre eksempler -
mest at betragte som en let kom-i-gang-skabelon til programmatisk at tilgå en URL og parse den indkomne resultat op.
Du kan downloade eksemplet her.
Ruby
Medlemmer af Copenhagen Ruby Brigade var de første til at anvende Danmark web
servicen og har frembragt et ruby library, som letter adgangen til Danmark web
servicen fra Ruby programmer. Du kan læse mere om det på
Christian Dalagers blog.
I det følgende kan læse hvordan du uden et ruby bibliotek kan tilgå Danmark web
servicen. Nedenstående Ruby-kode gør præcis det samme som de øvrige klienter,
men er om muligt endnu simplere; primært fordi HTTP-håndtering ligger så tæt indbygget i sproget,
og fordi vi kan benytte os af, at vi kan dot'te os gennem XML-dokumentet, hvor det giver mening,
og tilgå det som arrays, hvor det giver mening - og endeligt sparer vi en del kodelinier på,
at sproget er utypet.
Bemærk i øvrigt, at der findes andre XML-biblioteker,
som giver en lidt anden tilgang til dokumentet,
men dette eksempel er lavet ud fra at kunne køre på en standardinstallation af Ruby 1.8
Du kan downloade eksemplet her.
JavaScript
Den typiske JavaScript klientprogram er en html side i en browser.
Plain JavaScript
Nedenfor kan du se hvorledes Danmark Web Servicen kan anvendes fra JavaScript på en html side. Bemærk at der med suffixet .json angives at
formatet ønskes i JSON.
Du kan se/downloade hele eksemplet her
JQuery
I mange tilfælde er det en fordel at anvende et JavaScript library fremfor at
skrive sin egen JavaScript kode fra bunden. Ved at anvende et JavaScript library
kommer du til at skrive mindre kode som gør mere og slipper (næsten altid) for
at bekymre dig om browser kompabilitet. Defor har vi også taget et JavaScript
eksempel med, som baserer sig på JavaScript library'et
JQuery.
Du kan se/downloade hele eksemplet her
PHP
Jakob Jensen fra Dansk Scanning A/S har været så venlig at bidrage med følgende
PHP kodeeksempel:

Du kan downloade eksemplet her.
Groovy
Morten Hindsholm har været så venlig at udvide samlingen af kodeeksempler med følgende
Groovy eksempel:
Du er også meget velkommen til at bidrage med kodeeksempler i dit favorit
programmeringssprog. Send en mail med kodeeksemplet til Finn Jordal (fhj@itst.dk)
.
Python
Så er samlingen af kodeeksempler udvidet med et i Python, som Jakob Nielsen har været så venlig at lave:
Du er også meget velkommen til at bidrage med kodeeksempler i dit favorit
programmeringssprog. Send en mail med kodeeksemplet til Finn Jordal (fhj@itst.dk)
.