Komme i gang med MatrikkelAPIet
Nedlasting av WSDL-filer
På nettsidene til hvert enkelt matrikkelsystem kan man laste ned WSDL- og XSD-filer for MatrikkelAPI.
Bygging av klienter fra WSDL
Forskjellige utviklingsmiljøer håndterer generering av klientkode på ulike måter. Nedenfor finner du eksempler på hvordan dette gjøres med Java (JAXB) og .NET.
Eksempel 1: wsimport for Java
Hvis du bruker Java som utviklingsverktøy på klientsiden, kan du benytte verktøyet wsimport. Fram til JDK 11 var wsimport inkludert direkte i JDK (Java Development Kit).
En typisk kommando for å generere klientkode basert på en WSDL-fil:
c:\temp\wstest>wsimport c:\temp\wstest\wsdls\AdresseServiceWS.wsdl -d c:\temp\wstest\src -Xnocompile -keep -wsdllocation /wsdls/AdresseServiceWS.wsdl
Det er funnet noen rariteter ved kjøring av kommandoene. Hvis man skal ha flere WSDL-er i samme kildekodekatalog, er det viktig at StoreServiceWS eller RapportServiceWS kjøres som de siste wsimport-kommandoene.
Hvis disse ikke kjøres sist, kan det oppstå problemer med package-info.java og kvalifisering av pakkenavn, noe som igjen kan føre til feil under kjøring av applikasjonen.
Eksempel 2: .NET
I .NET-miljøer kan man benytte verktøyet svcutil, som følger med Visual Studio. Det er også mulig å installere verktøyet via Microsoft sine SDK-er, men den genererte koden er i praksis vanskelig å bruke uten Visual Studio og tilhørende biblioteker.
Verktøyet krever at man definerer en mapping fra namespace til pakkenavn (namespace mapping) for alle WSDL-pakker som skal inngå i den genererte klientkoden. Under følger et eksempel på en slik mapping for matrikkelens tjenester.
setlocal
set nsmap_domain=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain
set nsmap_domain_adresse=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/adresse,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.adresse
set nsmap_domain_adresse_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/adresse/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.adresse.koder
set nsmap_domain_aktivitetsliste=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/aktivitetsliste,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.aktivitetsliste
set nsmap_domain_aktivitetsliste_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/aktivitetsliste/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.aktivitetsliste.koder
set nsmap_domain_bruker=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/bruker,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.bruker
set nsmap_domain_bruker_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/bruker/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.bruker.koder
set nsmap_domain_bygning=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/bygning,no.statkart.matrikkel.matrikkelapi.wsapi.v1.bygning.domain.bygning
set nsmap_domain_bygning_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/bygning/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.bygning.domain.bygning.koder
set nsmap_domain_elektronisktinglysing=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/elektronisktinglysing,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.elektronisktinglysing
set nsmap_domain_endringslogg=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/endringslogg,no.statkart.matrikkel.matrikkelapi.wsapi.v1.endringslogg.domain.endringslogg
set nsmap_domain_endringslogg_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/endringslogg/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.endringslogg.domain.endringslogg.koder
set nsmap_domain_exception=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/exception,no.statkart.matrikkel.matrikkelapi.wsapi.v1.endringslogg.domain.exception
set nsmap_domain_forretning=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/forretning,no.statkart.matrikkel.matrikkelapi.wsapi.v1.forretning.domain.forretning
set nsmap_domain_geometri=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/geometri,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.geometri
set nsmap_domain_geometri_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/geometri/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.geometri.koder
set nsmap_domain_grunnforurensing=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/grunnforurensing,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.grunnforurensing
set nsmap_domain_grunnforurensing_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/grunnforurensing/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.grunnforurensing.koder
set nsmap_domain_jobb=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/jobb,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.jobb
set nsmap_domain_jobb_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/jobb/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.jobb.koder
set nsmap_domain_kart=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/kart,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.kart
set nsmap_domain_kodeliste=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/kodeliste,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.kodeliste
set nsmap_domain_kommune=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/kommune,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.kommune
set nsmap_domain_kommunetillegg=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/kommunetillegg,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.kommunetillegg
set nsmap_domain_kommunetillegg_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/kommunetillegg/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.kommunetillegg.koder
set nsmap_domain_konsesjon=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/konsesjon,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.konsesjon
set nsmap_domain_konsesjon_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/konsesjon/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.konsesjon.koder
set nsmap_domain_kulturminne=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/kulturminne,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.kulturminne
set nsmap_domain_kulturminne_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/kulturminne/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.kulturminne.koder
set nsmap_domain_matrikkelenhet=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/matrikkelenhet,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.matrikkelenhet
set nsmap_domain_matrikkelenhet_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/matrikkelenhet/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.matrikkelenhet.koder
set nsmap_domain_person=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/person,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.person
set nsmap_domain_person_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/person/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.person.koder
set nsmap_domain_rapport=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/rapport,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.rapport
set nsmap_domain_rapport_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/rapport/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.rapport.koder
set nsmap_domain_sefrak=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/sefrak,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.sefrak
set nsmap_domain_sefrak_koder=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/sefrak/koder,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.sefrak.koder
set nsmap_domain_util=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/util,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.util
set nsmap_domain_metadata=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/domain/metadata,no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.metadata
set nsmap_domain_exception=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/exception,no.statkart.matrikkel.matrikkelapi.wsapi.v1.exception
set nsmap_service_adresse=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/adresse,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.adresse
set nsmap_service_aktivitetsliste=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/aktivitetsliste,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.aktivitetsliste
set nsmap_service_bruker=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/bruker,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.bruker
set nsmap_service_bygning=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/bygning,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.bygning
set nsmap_service_forretning=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/forretning,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.forretning
set nsmap_service_grunnforurensing=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/grunnforurensing,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.grunnforurensing
set nsmap_service_kodeliste=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/kodeliste,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.kodeliste
set nsmap_service_kommune=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/kommune,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.kommune
set nsmap_service_konsesjon=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/konsesjon,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.konsesjon
set nsmap_service_kulturminne=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/kulturminne,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.kulturminne
set nsmap_service_matrikkelenhet=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/matrikkelenhet,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.matrikkelenhet
set nsmap_service_matrikkelsok=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/matrikkelsok,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.matrikkelsok
set nsmap_service_nedlastning=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/nedlastning,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.nedlastning
set nsmap_service_person=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/person,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.person
set nsmap_service_rapport=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/rapport,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.rapport
set nsmap_service_sefrak=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/sefrak,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.sefrak
set nsmap_service_store=/n:http://matrikkel.statkart.no/matrikkelapi/wsapi/v1/service/store,no.statkart.matrikkel.matrikkelapi.wsapi.v1.service.store
set nsmap_domain_all=%nsmap_domain% %nsmap_domain_adresse% %nsmap_domain_adresse_koder% %nsmap_domain_aktivitetsliste% %nsmap_domain_aktivitetsliste_koder% %nsmap_domain_bruker% %nsmap_domain_bruker_koder% %nsmap_domain_bygning% %nsmap_domain_bygning_koder% %nsmap_domain_elektronisktinglysing% %nsmap_domain_endringslogg% %nsmap_domain_exception% %nsmap_domain_metadata% %nsmap_domain_endringslogg_koder% %nsmap_domain_forretning% %nsmap_domain_geometri% %nsmap_domain_geometri_koder% %nsmap_domain_grunnforurensing% %nsmap_domain_grunnforurensing_koder% %nsmap_domain_jobb% %nsmap_domain_jobb_koder% %nsmap_domain_kart% %nsmap_domain_kodeliste% %nsmap_domain_kommune% %nsmap_domain_kommunetillegg% %nsmap_domain_kommunetillegg_koder% %nsmap_domain_konsesjon% %nsmap_domain_konsesjon_koder% %nsmap_domain_kulturminne% %nsmap_domain_kulturminne_koder% %nsmap_domain_matrikkelenhet% %nsmap_domain_matrikkelenhet_koder% %nsmap_domain_person% %nsmap_domain_person_koder% %nsmap_domain_rapport_koder% %nsmap_domain_sefrak% %nsmap_domain_sefrak_koder% %nsmap_domain_util% %nsmap_service_adresse% %nsmap_service_aktivitetsliste% %nsmap_service_bruker% %nsmap_service_bygning% %nsmap_service_forretning% %nsmap_service_grunnforurensing% %nsmap_service_kodeliste% %nsmap_service_kommune% %nsmap_service_konsesjon% %nsmap_service_kulturminne% %nsmap_service_matrikkelenhet% %nsmap_service_matrikkelsok% %nsmap_service_nedlastning% %nsmap_service_person% %nsmap_service_rapport% %nsmap_service_sefrak% %nsmap_service_store%
svcutil /out:WebServiceProxy.cs /serializer:XmlSerializer /config:App.config %nsmap_domain_all% wsdls\*.xsd wsdls\*.wsdl
Denne kjøringen krever at man har lastet ned zip-filen i en underkatalog med navn wsdls. Hvis man ikke erstatter teksten "REPLACE_WITH_ACTUAL_URL" i port-elementene i wsdl-ene med en ekste URL vil man få feilmeldinger under genereringen på dette og man vil mangle transport-egenskapen i app.config, men den genererte koden blir ok. Det kan derfor være lurt å legge inn en URL i wsdl-filene under generering og så skille dette ut i en property senere for å kunne konfigurere dette som man vil.
Bygge og kjøre .NET eksempelklient
Steg for steg bekrivelse av hvordan .NET eksempelklienten bygges.
Klientprosjektet lastes ned fra siden:
https://prodtest.matrikkel.no/matrikkelapi/wsapi/v1/dokumentasjon/index.html
- Åpne Visual Studio "Developer Command Prompt"
- Naviger til roten av .NET eksempelklientprosjektet
- Sett opp domain-mappings som beskrevet i seksjon "Eksempel 2:.NET".
Siste kommando er
set nsmap_domain_all=%nsmap_domain% ... - Bytt ut
"REPLACE_WITH_ACTUAL_URL"i WSDL-ene med ekte URL. Dette er ikke strengt nødvendig for å få eksempelklienten til å fungere, men man vil få feilmelding under generering av proxy-filen dersom man ikke gjør dette. - Lag proxyfil og legg til servicepunkter i
App.configmed kommando (merk at versjonsnummer og path kan være annerledes på din maskin):
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\SvcUtil.exe" ^
/out:WebServiceProxy.cs ^
/serializer:XmlSerializer ^
/mergeConfig ^
/config:App.config ^
%nsmap_domain_all% wsdl\*.xsd wsdl\*.wsdl
- Legg proxyfila WebServiceProxy.cs til prosjektet.
- Eksempelklienten har satt systemVersion til trunk. Dette betyr at man får ut de nyeste feltene fra API-et. Dersom man ønsker å teste en spesifikk versjon må dette endres i app.config
<add key="SystemVersion" value="3.17.0"/> - Bygg prosjektet med kommando msbuild
- Kjør Eksempelklienten med kommando bin\Debug\MatWSTester.exe. Url og credentials oppgis ved start, alternativt settes i filen App.config. Bruk da eksempelvis https://prodtest.matrikkel.no/matrikkelapi/wsapi/v1/ som endpoint adresse.
Kjøring av kall mot API-et
Etter at koden er generert for webtjenesteklienten blir det neste steget å kalle på tjenestene.
Eksempel for Java
AdresseService service = new AdresseServiceWS().getAdresseServicePort(); // Oppretter instansen vår
BindingProvider provider = (BindingProvider)service;
provider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); // Bytt ut med ekte URL
provider.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username); // Bytt ut med faktisk brukernavn
provider.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password); // Bytt ut med faktisk passord
VegadresseId id = service.findAdresseIdForIdent(new VegadresseIdent(), new MatrikkelContext());
Koden over gir oss tilgang til en tjeneste, setter URL, brukernavn og passord på tjenesten og utfører så et enkelt kall (med ikke-fullstendige parametre).