Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: BDO - Połączenie API
Forum PHP.pl > Forum > PHP
Tomplus
Czy ktoś łączył się z API serwisu BDO?
Potrzebuję małą pomoc.

Nie wiem jak połączyć się przy pomocy cURL z API aby uzyskać token?

Dokumentacja jest poniżej, ale nie potrafię uzyskać sensu związanego z samym połączeniem się.

https://test-bdo.mos.gov.pl/api/swagger/index.html

adres API to test-bdo.mos.gov.pl


Po wpisaniu nawet prostego skryptu mając dobre dane powinienem mieć w nagłówku odpowiedź 200, a mam 503, albo 404.


  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  3. 'Content-Type: application/json'
  4. ));
  5. curl_setopt($ch, CURLOPT_URL, "https://test-bdo.mos.gov.pl" );
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($ch, CURLOPT_POST, true);
  8. curl_setopt($ch, CURLOPT_HEADER, true);
  9. curl_setopt($ch, CURLOPT_VERBOSE, true);
  10. $verbose = fopen('php://temp', 'rw+');
  11. curl_setopt($ch, CURLOPT_STDERR, $verbose);
  12. curl_setopt($ch, CURLOPT_NOBODY, true);
  13. curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($jsonData));
  14.  
  15. $result=curl_exec($ch);
  16. echo $result;
  17. curl_close($ch);



Prawdopobnie kluczowe są parametry podane w (array)$jsonData, i widocznie tutaj nawalam.
Salvation
A jak wrzucisz te same dane, ale na endpoint produkcyjny?
Te rządowe API, to zawsze jakieś problemy. Szczególnie z TEST / DEV.
Tomplus
Ogólnie tak wygląda przykładowe zapytanie aby uzyskać kod EUP

  1. curl -X 'POST' 'https://test-bdo.mos.gov.pl/api/WasteRegister/v1/Auth/getEupList' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"ClientId": "apiID", "ClientSecret": "apiSecret", "PaginationParameters": {"Order": { "IsAscending": true}, "Page": { "Index": 0, "Size": 0 }}}'


Size: 0 to tylko 1 rekord.

Poniżej kod PHP, rozszerzony o odczyt nagłówków jakie przychodzą i wychodzą, w każdym razie teraz działa. Oczywiście wykluczyłem z kodu moje dostępy.

  1. function getCURL($url, $json) {
  2.  
  3. $ch = curl_init();
  4.  
  5. curl_setopt($ch, CURLOPT_URL, $url);
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  7. // curl_setopt($ch, CURLOPT_NOBODY, true);
  8. curl_setopt($ch, CURLOPT_VERBOSE, true);
  9. $verbose = fopen('php://temp', 'rw+');
  10. curl_setopt($ch, CURLOPT_STDERR, $verbose);
  11.  
  12. curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($json));
  13.  
  14. curl_setopt($ch, CURLOPT_HTTPHEADER, [
  15. 'Content-Type: application/json',
  16. 'accept: application/json'
  17. ]);
  18.  
  19. $response = curl_exec($ch);
  20.  
  21. if ($response === false) {
  22. echo 'Błąd cURL: ' . curl_error($ch);
  23. } else {
  24. rewind($verbose);
  25. $verboseLog = stream_get_contents($verbose);
  26. echo "Logi verbose:\n";
  27. echo $verboseLog;
  28. // Wyświetlenie całej odpowiedzi
  29. echo "\n\nCała odpowiedź:\n";
  30. echo $response;
  31.  
  32. // Podział odpowiedzi na nagłówki i treść
  33. $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
  34. $header = substr($response, 0, $header_size);
  35. $body = substr($response, $header_size);
  36.  
  37. // Wyświetlenie nagłówków i treści
  38. echo "\n\nNagłówki zwrotne, size: {$header_size}:\n";
  39. echo $header;
  40.  
  41. echo "\n\nTreść odpowiedzi:\n";
  42. echo $body;
  43. }
  44.  
  45. curl_close($ch);
  46. }
  47.  
  48.  
  49. $url = "https://test-bdo.mos.gov.pl/api/WasteRegister/v1/Auth/getEupList";
  50. $json = new stdClass;
  51. $json->ClientId = "apiId";
  52. $json->ClientSecret = "apiSecret";
  53.  
  54.  
  55. $getEupList = clone($json);
  56. $getEupList->PaginationParameters = new stdClass;
  57. $getEupList->PaginationParameters->Order = new stdClass;
  58. $getEupList->PaginationParameters->Order->IsAscending = true;
  59. $getEupList->PaginationParameters->Page = new stdClass;
  60. $getEupList->PaginationParameters->Page->Index = 0;
  61. $getEupList->PaginationParameters->Page->Size = 10;
  62.  
  63. getCURL("https://test-bdo.mos.gov.pl/api/WasteRegister/v1/Auth/getEupList", $getEupList);
  64.  



Ciekawostką jest to, że limit miejsc do platformy testowej jest ograniczona. Czyli jeżeli jakaś firma nie zgłosi zakończenia projektu, to nie dadzą dostępu kolejnej firmie która chce dokonać testowych prac na API.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.