API GUS SOAP

WN
  • Rejestracja:26 dni
  • Ostatnio:24 dni
  • Postów:3
0

Cześć, walczę od kilku dni z API GUS z SOAP ale cały czas coś jest nie tak.

Mam taki kod:

Kopiuj
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
 
$wsdl = "https://wyszukiwarkaregon.stat.gov.pl/wsBIR/wsdl/UslugaBIRzewnPubl-ver11-prod.wsdl";
 
$options = array(
    'trace' => 1,
    'exceptions' => 1,
    'cache_wsdl' => WSDL_CACHE_NONE,
    'connection_timeout' => 30,
    'soap_version' => SOAP_1_2,
);
 
try {
    $client = new SoapClient($wsdl, $options);
} catch (Exception $e) {
    die("Błąd tworzenia klienta SOAP: " . $e->getMessage());
}
 
$apiKey = "klucz";
 
$params = array("pKluczUzytkownika" => $apiKey);
try {
    $loginResult = $client->Zaloguj($params);
    if (empty($loginResult->ZalogujResult)) {
        die("Logowanie nie powiodło się: pusta wartość sesji.");
    }
    $sessionId = $loginResult->ZalogujResult;
    echo "Zalogowano – identyfikator sesji: " . $sessionId . "\n";
} catch (SoapFault $fault) {
    die("Błąd SOAP podczas logowania: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})");
}
 
$header = new SoapHeader('http://tempuri.org/', 'sid', $sessionId);
$client->__setSoapHeaders($header);
 
$searchNip = "5250000944"; // Przykładowy NIP do wyszukiwania
$searchParams = array(
    "pParametryWyszukiwania" => array(
        "Nip" => $searchNip
    )
);
 
try {
    $searchResult = $client->DaneSzukajPodmioty($searchParams);
    if (empty($searchResult->DaneSzukajPodmiotyResult)) {
        die("Wyszukiwanie nie zwróciło danych.");
    }
    echo "Wynik wyszukiwania:\n";
    echo $searchResult->DaneSzukajPodmiotyResult;
} catch (SoapFault $fault) {
    die("Błąd SOAP podczas wyszukiwania: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})");
}
?>

mam hosting na home, i wyskakuje mi błąd:

Błąd tworzenia klienta SOAP: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://wyszukiwarkaregon.stat.gov.pl/wsBIR/wsdl/UslugaBIRzewnPubl-ver11-prod.wsdl' : failed to load external entity "https://wyszukiwarkaregon.stat.gov.pl/wsBIR/wsdl/UslugaBIRzewnPubl-ver11-prod.wsdl"

BIR1.1 wersja testowa
Adres usługi:
https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc
Adres wsdl:
https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/wsdl/UslugaBIRzewnPubl-ver11-test.wsdl
Klucz:
abcde12345abcde12345

Czy ktoś byłby tak miły i mógł mi pomóc z tym

jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:minuta
  • Postów:3505
1

Masz jeszcze coś ekstra w samych logach?
Jak miałbym obstawiać to obstawiałbym błąd z certyfikatami.
Spróbuj wyłączyć ich walidację

Kopiuj
$options = array(
    'trace' => 1,
    'exceptions' => 1,
    'cache_wsdl' => WSDL_CACHE_NONE,
    'connection_timeout' => 30,
    'soap_version' => SOAP_1_2,
    'stream_context' => stream_context_create(
              [
                  'ssl' => [
                      'verify_peer'       => false,
                      'verify_peer_name'  => false,
                      'allow_self_signed' => true
                  ]
              ]
          )
);

Oczywiście pamiętaj, że to tylko test, jeśli to przejdzie to musisz zrobić porządek z certyfikatami.

WN
  • Rejestracja:26 dni
  • Ostatnio:24 dni
  • Postów:3
0

Niestety nie działa, certyfikaty już przerabiałem i wychodzi Błąd SOAP podczas logowania: (faultcode: HTTP, faultstring: Internal Server Error)

edytowany 1x, ostatnio: cerrato
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:minuta
  • Postów:3505
2

Opisuj może trochę dokładniej. Poprzedni błąd sugerował brak możliwości pobrania schematu lub schematów powiązanych. Teraz piszesz o logowaniu. Czyli poprzednie zmiany pchnęły Cię do przodu?
Czy ten błąd o logowaniu jest od początku? Ten błąd jest z linii 53 czy 32? Możesz śmiało wklejać stactrace jeśli masz.

PA
  • Rejestracja:ponad rok
  • Ostatnio:około 18 godzin
  • Postów:34
1

Google GUS SOAP API faultcode: HTTP, faultstring: Internal Server Error i przejrzyj porady z pierwszego wyniku: http://forum.php.pl/lofiversion/index.php/t240172.html.

U mnie logowanie ruszyło po uwzględnieniu pierwszych uwag z opisu ikario:

Kopiuj
Zalogowano – identyfikator sesji: 3v95pb648f2d7duenc6d

Potem leci jakiś exception, przypuszczam, że pozostałe uwagi rozwiązują ten problem.

overcq
Ostatni ‘post’ tamtego wątku zawiera kompletną klasę, która rozwiązuje problem, oraz przykład użycia.
jurek1980
@overcq: ten kod źle nie wygląda, tylko opis problemu jest nie jasny. Np. jest użyte prod w adresie WSDL a token podany tu sugeruje jakiś sandbox. Poprzedni błąd nie zniknął magicznie. Lepiej robić z kodem który się zna niż kopiować wszystko losowo z netu.
overcq
Po wprowadzeniu poprawek zgodnie z opisem z tamtego wątku logowanie, wyszukiwanie i wylogowanie z usługi “test” działa, natomiast możliwe, że nie działa logowanie do usługi “prod”, ale do tej usługi wymagana jest imienna rejestracja i być może podanie źródłowych adresów IP.
WN
  • Rejestracja:26 dni
  • Ostatnio:24 dni
  • Postów:3
0
jurek1980 napisał(a):

Opisuj może trochę dokładniej. Poprzedni błąd sugerował brak możliwości pobrania schematu lub schematów powiązanych. Teraz piszesz o logowaniu. Czyli poprzednie zmiany pchnęły Cię do przodu?
Czy ten błąd o logowaniu jest od początku? Ten błąd jest z linii 53 czy 32? Możesz śmiało wklejać stactrace jeśli masz.

w logach nic nie ma, gdy wcześniej testowałem walidację certyfikatów też się pojawiał ten sam błąd.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.