Openbare data energielabels API endpoint URL

Pagina: 1
Acties:
  • 2.181 views

Vraag


Acties:
  • 0 Henk 'm!

  • powershift
  • Registratie: Oktober 2018
  • Laatst online: 22-06-2022
Beste,

Ik ben een beetje aan het experimenteren met de ep-online.nl website met het idee of ik de openbare energielabel data kan opvragen.

Ik heb een API key aangevraagd en die kan ik verifiëren.
Echter nu zit op de swagger site te kijken van ep-online.nl website en daar staat wel het relatieve pad maar het absolute pad staat daar niet bij.

Misschien lees ik eroverheen maar ik zie niet waar ik het absolute pad kan opvragen.

Afbeeldingslocatie: https://tweakers.net/i/j8qgKLSpy4XfV2wDfl0EOxKuzr8=/800x/filters:strip_exif()/f/image/nMoNk6fmZg0i40FMmQBU7vMJ.png?f=fotoalbum_large

Eveneens weet ik ook niet wat de {version} zou zijn. Ik zou uiteraard gewoon 1 allereerst gebruiken. Maar ik zie dus niet de documentatie met de informatie welke versie ik moet gebruiken en of welke url om van het relatieve pad een absoluut pad te maken.

Hopelijk kan iemand mij vertellen wat ik over het hoofd zie. Want ik loop vast. :F

Wat ik al gevonden of geprobeerd heb :
Gezocht naar een online handleiding anders dan die van de Swagger pagina.

Swagger Pagina
https://public.ep-online.nl/swagger/index.html

Beste antwoord (via powershift op 30-07-2021 17:14)


  • Kanarie
  • Registratie: Oktober 2000
  • Laatst online: 15:39

Kanarie

תֹ֙הוּ֙ וָבֹ֔הוּ

"Authorization", is de Key van die header.

Ik gebruik deze API professioneel, je wilt de v2 versie gebruiken.

[ Voor 45% gewijzigd door Kanarie op 30-07-2021 16:51 ]

We're trapped in the belly of this horrible machine. And the machine is bleeding to death.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Wolly
  • Registratie: Januari 2001
  • Niet online

Acties:
  • 0 Henk 'm!

  • powershift
  • Registratie: Oktober 2018
  • Laatst online: 22-06-2022
Geweldig!! Dank je!! Dat werkt!
Nu nog even uitvinden met welke key ze de APIkey willen ontvangen. :)

Acties:
  • +1 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 11:32

MueR

Admin Tweakers Discord

is niet lief

powershift schreef op vrijdag 30 juli 2021 @ 16:34:
[...]


Geweldig!! Dank je!! Dat werkt!
Nu nog even uitvinden met welke key ze de APIkey willen ontvangen. :)
Dat staat letterlijk bovenaan die pagina?
Gebruik met API-key
De API-key moet in de Authorization header meegeven worden op het request naar de API.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • powershift
  • Registratie: Oktober 2018
  • Laatst online: 22-06-2022
MueR schreef op vrijdag 30 juli 2021 @ 16:37:
[...]

Dat staat letterlijk bovenaan die pagina?


[...]
Ja en nee.
Ik snap je reactie.

Maar ik snap de uitwerking niet helemaal :

Afbeeldingslocatie: https://tweakers.net/i/vl0HPs61QH1kkhOdqh-Y3jjs7ZI=/800x/filters:strip_exif()/f/image/mzKd1EhQNqmdbmoWaIlViShR.png?f=fotoalbum_large

En als ik hem dan in PostMan toevoeg krijg ik het volgende :

Afbeeldingslocatie: https://tweakers.net/i/oeR6YbRLPia7EfNxo97G-OvkBys=/800x/filters:strip_exif()/f/image/ZVTYVLsl3RErhNR9mkKyBqQl.png?f=fotoalbum_large

Dus nog steeds doe ik daar iets niet goed.

Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • Kanarie
  • Registratie: Oktober 2000
  • Laatst online: 15:39

Kanarie

תֹ֙הוּ֙ וָבֹ֔הוּ

"Authorization", is de Key van die header.

Ik gebruik deze API professioneel, je wilt de v2 versie gebruiken.

[ Voor 45% gewijzigd door Kanarie op 30-07-2021 16:51 ]

We're trapped in the belly of this horrible machine. And the machine is bleeding to death.


Acties:
  • 0 Henk 'm!

  • Vinoxx
  • Registratie: Juni 2023
  • Laatst online: 21-07-2023
@Kanarie ik heb een vraagje.
Je noemt dat je deze API voor professioneel gebruik benut, bedoel je een website?
Het lukt mij voor deze API wel om lokaal data uit EP-online te halen, maar op mijn website resulteert het in een error.
kan jij me misschien verder helpen? :)

Acties:
  • 0 Henk 'm!

  • Kanarie
  • Registratie: Oktober 2000
  • Laatst online: 15:39

Kanarie

תֹ֙הוּ֙ וָבֹ֔הוּ

Professioneel gebruik als in de integratie van deze koppeling die ik voor m'n werkgever heb gebouwd.

Als je hier kunt delen wat je gebouwd en geprobeerd hebt en welke error je krijgt, zal ik er naar kijken.

We're trapped in the belly of this horrible machine. And the machine is bleeding to death.


Acties:
  • 0 Henk 'm!

  • Vinoxx
  • Registratie: Juni 2023
  • Laatst online: 21-07-2023
Thanks @Kanarie

Ik gebruik de volgende HTML/Javascript code:
<form id="addressForm">
<label for="postcode">Postcode:</label>
<input type="text" id="postcode" name="postcode" required>
<br>
<label for="huisnummer">Huisnummer:</label>
<input type="text" id="huisnummer" name="huisnummer" required>
<br>
<label for="huisletter">Huisletter:</label>
<input type="text" id="huisletter" name="huisletter">
<br>
<input type="submit" value="Submit">
</form>

<div id="result"></div>

<script>
document.addEventListener("DOMContentLoaded", function() {
function fetchData(event) {
event.preventDefault(); // Prevent form submission

var postcode = document.getElementById("postcode").value;
var huisnummer = document.getElementById("huisnummer").value;
var huisletter = document.getElementById("huisletter").value;

var proxyUrl = "https://cors-anywhere.herokuapp.com/";
var apiUrl = "https://public.ep-online.nl/api/v3/PandEnergielabel/Adres?postcode=" + postcode + "&huisnummer=" + huisnummer + "&huisletter=" + huisletter;
var fullUrl = proxyUrl + apiUrl;

var requestOptions = {
method: 'GET',
headers: {
'Authorization': 'XXX',
'Cookie': 'XXX',
'X-Requested-With': 'XMLHttpRequest'
}
};

fetch(fullUrl, requestOptions)
.then(response => {
if (response.ok) {
return response.text();
} else {
throw new Error('Network response was not OK');
}
})
.then(result => {
// Display the result on the page
document.getElementById("result").textContent = result;
})
.catch(error => {
// Display an error message on the page
document.getElementById("result").textContent = "An error occurred. Please try again later.";
console.log('Error:', error);
});
}

document.getElementById("addressForm").addEventListener("submit", fetchData);
});
</script>

Een simpel formulier dat de input opvraagt voor de API.
In mijn lokale omgeving werkt dit helemaal goed, echter op mijn website niet.

De volgende errors haal ik uit inspect
?v=2.0:16 WebSocket connection to 'wss://public-api.wordpress.com/pinghub/wpcom/me/newest-note-data' failed:
v @ ?v=2.0:16
cors-anywhere.herokuapp.com/https://public.ep-online.nl/api/v3/PandEnergielabel/Adres?postcode=XXX&huisnummer=XXX&huisletter=:1 Failed to load resource: the server responded with a status of 403 (Forbidden)
(index):843 Error: Error: Network response was not OK
at (index):833:19

Zowel bij de Authorization, Cookies, als voorbeeld-adres heb ik de input vervangen door 'XXX', in de daadwerkelijke code is die anders.

Mocht je de oplossing weten, hoor ik dat erg graag :)

Acties:
  • +1 Henk 'm!

  • Kanarie
  • Registratie: Oktober 2000
  • Laatst online: 15:39

Kanarie

תֹ֙הוּ֙ וָבֹ֔הוּ

Je proxiet je connecties nu inclusief api key (die door al je frontend gebruikers te lezen zal zijn) door een third party service die alleen voor "development purposes" is.

Het lijkt me dat die Authorization header die naar EP-Online moet, nu ook niet verder komt dan de proxy, want als ik de source code van cors-anwyhere goed begrepen heb wordt die authorization header niet doorgestuurd.

De correcte oplossing lijkt me de EP Online api niet rechtstreeks vanuit de brower aan te roepen, maar vanaf wat server-side code, dan is die cors-anywhere proxy ook niet nodig.

We're trapped in the belly of this horrible machine. And the machine is bleeding to death.


Acties:
  • +1 Henk 'm!

  • Vinoxx
  • Registratie: Juni 2023
  • Laatst online: 21-07-2023
@Kanarie thanks! dit helpt me zeker op weg.. Ben nog beginnend op dit vlak 8)7
Nu voor het eerst (ooit) een server-side-code opgezet! :*)

Ik heb nu de volgende code staan maar krijg steeds de error, zie jij de fout?:

JSON:
1
2
3
4
5
6
{
"type": "https://httpstatuses.io/401",
"title": "Unauthorized",
"status": 401,
"detail": "Valid API key required to access this resource."
}


*snip* beperk je tot relevante(!) code

[ Voor 82% gewijzigd door RobIII op 28-06-2023 20:06 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Heb je de error überhaupt bekeken? Er staat in leesbaar Engels wat het probleem is.

Acties:
  • +1 Henk 'm!

  • Kanarie
  • Registratie: Oktober 2000
  • Laatst online: 15:39

Kanarie

תֹ֙הוּ֙ וָבֹ֔הוּ

Ah mooi, je hebt nu een error te pakken die van EP Online lijkt te komen :)

Het probleem is dat je wel een variable requestOptions bouwt met (neem ik aan) de juiste API key in de "Authorization" header, maar je lijkt die verderop niet te gebruiken in het request wat je met fetch doet. In de docs over de javascript fetch API kun je zien hoe je die header op de juiste manier zet.
De "cookies" header lijkt me ook niet nodig.

[ Voor 5% gewijzigd door Kanarie op 28-06-2023 20:13 . Reden: Mijn reactie heeft het over code die vanwege een mod-edit niet meer te zien is ]

We're trapped in the belly of this horrible machine. And the machine is bleeding to death.


Acties:
  • 0 Henk 'm!

  • Vinoxx
  • Registratie: Juni 2023
  • Laatst online: 21-07-2023
@Kanarie je bent een held!
Ik had inderdaad geen goede connectie tussen de html en de server, nu is dat gelukt.
Echt super bedankt, enorm mee geholpen :)

Acties:
  • 0 Henk 'm!

  • reinierbruil
  • Registratie: September 2015
  • Laatst online: 15-05 08:14
Beste experts,

Ik probeer ook energielabels bij EP-Online op te halen. Dit moet in VBA, maar ik heb geen idee waar ik wat moet invullen, en begrijp de code ook niet. Wie kan mij hierbij helpen? Ik heb maanden geleden de volgende code ergens gevonden, maar dit is natuurlijk niet compleet...

Sub MaakHTTPVerzoekEnergielabel()
Dim xmlhttp As Object
Dim url As String
Dim requestData As String

' URL van de EP-Online API endpoint
url = "https://public-acc.ep-online.nl/api/v1/PandEnergielabel/Adres"

' XML- of JSON-verzoekgegevens
requestData = "<xml>...</xml>"

' Maak een nieuw XMLHTTP-object
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")

' Stel het verzoek in
xmlhttp.Open "POST", url, False
xmlhttp.setRequestHeader "Content-Type", "application/xml" ' of "application/json" voor JSON-verzoeken

' Optioneel: stel headers in voor autorisatie, indien vereist
'xmlhttp.setRequestHeader "Authorization", "Bearer your_token"

' Stuur het verzoek
xmlhttp.send requestData

' Verwerk het antwoord
If xmlhttp.Status = 200 Then ' Controleer of het verzoek succesvol was
' Ontvangen gegevens
Dim responseData As String
responseData = xmlhttp.responseText

' Hier pak ik het opgehaalde energielabel op en doe ermee wat nodig is in de rest van mijn code
Else
' Het verzoek was niet succesvol, verwerk de foutmelding
MsgBox "Fout bij het uitvoeren van het HTTP-verzoek: " & xmlhttp.Status & " - " & xmlhttp.StatusText
End If

' Ruim de objecten op
Set xmlhttp = Nothing
End Sub

Alvast dank voor de reacties.
Reinier

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Sorry, maar dat is hier niet de bedoeling (Help, mijn script werkt niet (goed) en Kan iemand even...?).

Open even een eigen topic (neem even onze Quickstart door voordat je dat doet) en gebruik dan ook even code tags in je nieuwe topic ;)

Vergeet ook niet aan te geven wat je al geprobeerd hebt (heb je uberhaupt het bearer-token ingevuld) en de response bekeken? Al gedebugged? (Debuggen: Hoe doe ik dat?)

[ Voor 28% gewijzigd door RobIII op 05-10-2023 10:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.