Kodeeksempler - CPR Services
Alle kodeeksempler kommer i C# (.NET), Java, og Node.js varianter. Kodeeksemplerne kan downloades fra:Â CPR Code samples Bitbucket. BemĂŠrk dog at kun java eksempler er fuldt udbygget.
Systemkrav
For at kunne anvende kodeeksemplerne, er det nĂždvendigt at have et idriftsĂŠttelsesmiljĂž installeret, i de downloadede kodeeksemplers sprog.
Environment | Minimum Version | Notes |
---|---|---|
Java | JDK 17 | No implementation-specific notes. |
.NET (C#) | 8.0 | No implementation-specific notes. |
Node.js | PĂ„ vej. |
Samtlige kodeeksempler er blevet testet i Windows 10 (x64).
Modtagelse af eksempler
Kodeeksempler til CPR interface kan dowloades med Git:
.NET: git clone https://bitbucket.org/cprcodesamples/gctp-examples-csharp.git  Java: git clone https://bitbucket.org/cprcodesamples/gctp-examples-java.git  Node.js: PÄ vej
Hvis du ikke har Git installeret (eller foretrĂŠkker et grafisk user interface), kan du downloade kodeeksemplerne fra CPR code samples Bitbucket:
- Naviger til Bitbucket.
- Klik pÄ knappen DirekteMatch source code repositories (Java, .NET, or Node.js).
- Klik pÄ  ikonet i "Navigation" menuen.
- Klik pÄ "Download repository" link. Alternativt, kan der vÊlges et specifikt tag eller en branch for at downloade.
Eksekvering af kodeeksempler
SĂ„ snart kodeeksemplerne er downloadet, vil det vĂŠre muligt at pakke arkivet ud til en mappe efter eget valg.
For instruktioner om de kommandoer, der er nĂždvendige for at kĂžre de specifikke kodeeksempler, se Bitbucket repository, som du hentede eksemplet fra.
HTTP forespĂžrgsel-svar eksempler
Her vises eksempler pÄ hvordan forskellige GCTP forespÞrgsler og responser ser ud inklusiv visse HTTP header nogle HTTP header vÊrdier undlades.
Login forespĂžrgsel:
POST /cpr-online-gctp/gctp HTTP/1.1 Host: gctp.cpr.dk User-Agent: CPR/1.0 Content-Length: 184 Content-Type: text/xml <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <root xmlns="http://www.cpr.dk"> <Gctp v="2.0"> <Sik function="signon" userid="PERSONKODE" password="PASSWORD"/> </Gctp> </root>
BemĂŠrk at "userid" og "password" vĂŠrdier skal udfyldes korrekt.
Login respons, userid og password OK:
HTTP/1.1 200 Date: Thu, 25 Nov 2021 15:29:22 GMT Set-Cookie: Token=...; Max-Age=7200; Expires=Thu, 25-Nov-2021 17:29:22 GMT Content-Type: text/xml;charset=ISO-8859-1 Content-Length: 118 Set-Cookie: AlteonP=201618953; path=/; secure; HttpOnly; SameSite=Lax <root xmlns="http://www.cpr.dk"> <Gctp v="2.0"> <Sik> <Kvit r="returKode" t="Signon udfĂžrt" v="900"/> </Sik> </Gctp> </root>
BemÊrk at der findes flere Set-Cookie HTTP headers. Brugerens login token er angivet som cookie i en Set-Cookie header og GCTP-respons kvitteringen har vÊrdi 900 (signon udfÞrt).
VIGTIGT
Kunder opfordres til at benytte RFC6265-kompatibel Cookie parsers i deres GCTP integrationer. Nye attributter kan blive tilfĂžjet til Token Cookies uden varsel.
Login respons, brugernavn (userid) og/eller password forkert:
HTTP/1.1 200 Date: Thu, 25 Nov 2021 15:29:22 GMT Content-Type: text/xml;charset=ISO-8859-1 Content-Length: 130 Set-Cookie: AlteonP=201618953; path=/; secure; HttpOnly; SameSite=Lax <root xmlns="http://www.cpr.dk"> <Gctp v="2.0"> <Sik> <Kvit r="returKode" t="Ugyldig kodeord indtastet" v="905"/> </Sik> </Gctp> </root>
BemÊrk at HTTP statuskoden er 200 og brugeren er ikke logget pÄ systemet (ingen Set-Cookie HTTP header der indeholder et token). GCTP-respons kvitteringen har vÊrdi 905 (Ugyldig kodeord indtastet).
Personopslag forespĂžrgsel til STAMP (stamdata til private) service:
POST /cpr-online-gctp/gctp HTTP/1.1 Host: gctp.cpr.dk User-Agent: CPR/1.0 Cookie: Token=... Content-Type: text/xml Content-Length: 260 <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <root xmlns="http://www.cpr.dk"> <Gctp v="2.0"> <System r="CprSoeg"> <Service r="STAMP"> <CprServiceHeader r="STAMP"> <Key> <Field r="PNR" v="0000009999"/> </Key> </CprServiceHeader> </Service> </System> </Gctp>
BemĂŠrk at login token er angivet som den eneste cookie i Cookie HTTP-headeren.
Personopslag respons fra STAMP service hvor personnummeret eksisterer:
HTTP/1.1 200 Date: Thu, 25 Nov 2021 15:49:06 GMT Content-Type: text/xml;charset=ISO-8859-1 Content-Length: 1136 Set-Cookie: AlteonP=257126245; path=/; secure; HttpOnly; SameSite=Lax <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <root xmlns="http://www.cpr.dk"> <Gctp v="2.0" env=""> <System r="CprSoeg"> <Service r="STAMP"> <CprServiceHeader r="STAMP" ts="20211125165745906505"/> <CprData u="O"> <Rolle r="HovedRolle"> <Praes r="STAMPNR"> <Field r="PNR" v="0000009999"/> <Field r="I_VENT_MRK"/> <Field r="ADRNVN" v="Efternavn,Fornavn Mellemnavn" t="Fornavn Mellemnavn Efternavn"/> <Field r="KOEN" v="K"/> <Field r="STATUS" v="01"/> <Field r="STARTDATOSTATUS"/> <Field r="PNRGAELD"/> <Field r="FOEDDATO" v="19700101"/> <Field r="FOEDDATOUSM"/> <Field r="BESKYT"/> <Field r="CONVN"/> <Field r="ETAGE"/> <Field r="HUSNR" v="007"/> <Field r="SIDEDOER"/> <Field r="BNR"/> <Field r="KOMKOD" v="0000" t="Kommunenavn" tl="Udvidet kommunenavn"/> <Field r="VEJKOD" v="0000" t="Testvej"/> <Field r="BYNVN"/> <Field r="LOKALITET"/> <Field r="POSTNR" v="0000" t="Postdistriktsnavn"/> <Field r="UDR_LANDEKOD"/> <Field r="UDLANDSADR1"/> <Field r="UDLANDSADR2"/> <Field r="UDLANDSADR3"/> <Field r="UDLANDSADR4"/> <Field r="UDLANDSADR5"/> <Field r="STADR" v="Vejnavn 7"/> </Praes> </Rolle> </CprData> <Kvit r="Ok" t="" v="0"/> </Service> </System> </Gctp> </root>
BemĂŠrk at GCTP-respons kvitteringen har vĂŠrdi 0 (Ok).
Personopslag respons fra STAMP service hvor personnummeret ikke eksisterer:
HTTP/1.1 200 Date: Thu, 25 Nov 2021 15:49:06 GMT Content-Type: text/xml;charset=ISO-8859-1 Content-Length: 308 Set-Cookie: AlteonP=257126245; path=/; secure; HttpOnly; SameSite=Lax <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <root xmlns="http://www.cpr.dk"> <Gctp v="2.0" env=""> <System r="CprSoeg"> <Service r="STAMP"> <CprServiceHeader r="STAMP" ts="20211125170558453023"/> <Kvit r="Fejl" t="Personen 000000-9999 findes ikke i CPR." v="172"/> </Service> </System> </Gctp> </root>
BemÊrk at HTTP statuskoden er 200 og GCTP-respons kvitteringen har vÊrdi 172 (Personen findes ikke i CPR).
Generelt om fortolkning af GCTP-responserne
Som udgangspunkt returneres der altid statuskode 200 i HTTP-responsen hvis den pÄgÊldende GCTP-service har svaret. I sÄ fald skal GCTP-responsen i HTTP-responsens "body" fortolkes for at afgÞre resultatet af forespÞrgslen.
Der anbefales fĂžlgende i forhold til fortolkning af GCTP-responserne:Â
- Kontroller HTTP statuskoden og ikke HTTP statusteksten i fortolkningsprogrammerne.
- IndlĂŠs GCTP-responsen som XML fremfor at navigere rundt i responsen som en stor tekstvĂŠrdi.
- Kontroller altid fejlkoden i GCTP-kvitteringen inden viderebehandling af GCTP-responsens indhold.