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:

XML dokument eksempel

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.

Linq sample

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.

Java sample

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

Ruby sample

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.

JQuery sample

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:

PHP sample code

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