[PHP] OpenKvk api request

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Goedenmorgen,

Ik heb een vreemd probleem. het volgende script levert bij mij een bad request op:
PHP:
1
2
3
4
5
<?php
$file = "http://api.openkvk.nl/json/" . rawurlencode("SELECT * FROM kvk WHERE kvks= 20147376");
$c = file_get_contents($file,false);
echo $c;
?>


Volgens de api van openkvk moet dit werken, maar bij mij wil het maar niet lukken. Uiteraard heb ik zelf gegoogled maar ik krijg daaruit geen oplossing. Daarnaast heb ik een andere server geprobeerd. Gekeken of allow_url_fopen op on stond. Ik heb een andere site geprobeerd, daar werkt het wel.

Ik heb ook de url getest door deze via een echo in de browser bar te pasten en dat lukt wel. Kortom ik zit met de handen in het haar. Ongetwijfeld doe ik iets ontzettend doms, maar ik zou niet weten wat. Ik heb overigens ook de reguliere urlencode gebruikt, maar zonder soelaas. Dan werkt een direct verzoek niet.

Ter info: ik gebruik dit om een ajax request te kunnen doen.

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 21:23
maar waarom doe je dit via php? Dit kan toch ook via dojo oid?

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Ik ben niet bekend met dojo, maar als ik daar zo op het eerste gezicht naar kijk is dat een javascript framework. Zoals je ongetwijfeld weet kan je enkel ajax requests doen naar je eigen domein. ivm veiligheid. Dit scriptje is dus een soort proxy voor data van een ander domein nml. openKvk. Voorzover ik weet kan ik met mijn framework (prototype) dit niet doen. Daarom lijkt het me ook sterk dat dat met dojo wel zou kunnen.

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 21:23
Ja sorry mijn fout ( het is nog vroeg... ).

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ik weet niet waar je die documentatie vandaan haalt (ik kan het zo 123 niet vinden) maar in een interview met die coder van OpenKVK vind ik dit;

[quote=http://www.hackdeoverheid.nl/]
Stefan: De site geeft een ‘directe database interface’ naar een database met het handelsregister er in. Daarmee kun je direct in SQL queries uitvoeren op de database, via een techniek die ‘DBSlayer’ heet, mijn favoriete webserver Cherokee heeft een aantal uitvoer mogelijkheden waaronder JSON.

http://www.openkvk.nl/api/SELECT count(*) FROM kvk;

De bovenstaande query geeft het aantal resultaten in JSON terug. Daarmee kun je dus super eenvoudig een webinterface maken die even snel een nummertje voor je opzoekt. Dat was het technische gedeelte

We hebben uiteraard wat handige dingen toegevoegd:
http://www.openkvk.nl/Kinkrsoftware (zoek : naam)
http://www.openkvk.nl/27312152 (zoek: KVK nummer)
http://www.openkvk.nl/adres: Oude Trambaan (zoek: adres)
http://www.openkvk.nl/2265CA (zoek: postcode)[/quote]

Ah, als ik dit zo lees dien je dat 'json' in je URL achterwege te laten.
Nope, ook niet. Misschien dien je je query niet te encoden? Of urlencode ipv rawurlencode gebruiken?


Edit; ok, dit scriptje werkt;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$file = "http://api.openkvk.nl/json/".rawurlencode("SELECT * FROM kvk WHERE kvks='20147376'");
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, $file);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);


Het punt zat 'm er in dat die OpenKVK api een header() redirect gebruikt om een file te pushen. file_get_contents kan geen header redirects volgen maar cURL wel (als je dat instelt, zie regel 5).

Succes!

[ Voor 27% gewijzigd door Peedy op 23-02-2010 09:48 ]


Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Hee hartstikke bedankt, ik vermoede al een beetje dat het aan openkvk zelf lag, maar ik ben niet bekend met de curl functies, en kon dus niets bedenken wat wel werkte.

Hoe dan ook ik ga hier zeker mee aan de slag. Maar het is wel een beetje een omslachtige / slecht gedocumenteerde api, of ligt het aan mij. Nogmaals bedankt though!

Acties:
  • 0 Henk 'm!

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

gnirts_modnar schreef op dinsdag 23 februari 2010 @ 10:01:
Hee hartstikke bedankt, ik vermoede al een beetje dat het aan openkvk zelf lag, maar ik ben niet bekend met de curl functies, en kon dus niets bedenken wat wel werkte.

Hoe dan ook ik ga hier zeker mee aan de slag. Maar het is wel een beetje een omslachtige / slecht gedocumenteerde api, of ligt het aan mij. Nogmaals bedankt though!
Nouja de redirect gebeurt alleen als je zelf geen LIMIT X opgeeft...

Overigens als je dan toch PHP gebruikt, kun je veel beter de /php/ gebruiken :) en de respectievelijke DBSlayer class ervoor...

[ Voor 11% gewijzigd door Skinkie op 23-02-2010 21:35 . Reden: dbslayer ]

Steun Elkaar, Kopieer Nederlands Waar!


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

gnirts_modnar schreef op dinsdag 23 februari 2010 @ 10:01:
Hoe dan ook ik ga hier zeker mee aan de slag. Maar het is wel een beetje een omslachtige / slecht gedocumenteerde api, of ligt het aan mij. Nogmaals bedankt though!
Dat ligt denk ik aan jou. Voor wat ik er van gezien heb lijkt het me dat alle documentatie die je nodig hebt om de api te gebruiken ruimschoots aanwezig is. Het enige wat ze veronderstellen is kennis van SQL en kennis van je eigen platform.

Waar jij nu vooral tegenaan loopt is een beperkte http ondersteuning van file_get_contents. Eigenlijk ligt het dus niet aan openKvk of jouw, maar aan php ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1