Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> BDO - Połączenie API
Tomplus
post 1.07.2024, 10:31:10
Post #1





Grupa: Zarejestrowani
Postów: 1 872
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Salvation
post 1.07.2024, 17:49:01
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 71
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


A jak wrzucisz te same dane, ale na endpoint produkcyjny?
Te rządowe API, to zawsze jakieś problemy. Szczególnie z TEST / DEV.
Go to the top of the page
+Quote Post
Tomplus
post 2.07.2024, 09:13:51
Post #3





Grupa: Zarejestrowani
Postów: 1 872
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 01:21