Spring boot Api Gus

Spring boot Api Gus
Mateusz Starosta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Siemanko! Pisze aplikacje na studia i mam pewien problem z połączeniem z serwerem API GUS. Czy mógłby ktoś zweryfikować czy to co obecnie posiadam jest w jakimś stopniu poprawne i w którym miejscu mam błąd? Serwer zwraca mi błąd 400. Natomiast jak porównuje jakie ma być wysłane żądanie do mojego wysłanego to za bardzo nie mogę zlokalizować problemu.
Z góry dzięki za pomoc 😀

Kopiuj
public GusApiService() {
        SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory();
        messageFactory.afterPropertiesSet();
        this.webServiceTemplate = new WebServiceTemplate(messageFactory);

        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setClassesToBeBound(SoapRequest.class, SoapResponse.class, ObjectFactory.class);
        marshaller.setMtomEnabled(true);
        this.webServiceTemplate.setMarshaller(marshaller);
        this.webServiceTemplate.setUnmarshaller(marshaller);

        HttpComponentsMessageSender sender = new HttpComponentsMessageSender();
        sender.setConnectionTimeout(5000);
        sender.setReadTimeout(10000);
        this.webServiceTemplate.setMessageSender(sender);
    }

    public void login() {
        System.out.println("🔄 Logowanie do GUS...");

        String requestXml = String.format("""
        <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://CIS/BIR/PUBL/2014/07"> 
        <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
        <wsa:To>https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc</wsa:To>
         <wsa:Action>http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj</wsa:Action>
          </soap:Header>
           <soap:Body> 
          <ns:Zaloguj> 
          <ns:pKluczUzytkownika>%s</ns:pKluczUzytkownika> 
          </ns:Zaloguj> 
          </soap:Body> 
          </soap:Envelope>
        """, API_KEY);

        System.out.println("📤 Wysyłane XML (logowanie):");
        System.out.println(requestXml);

        try {
            SoapResponse response = (SoapResponse) webServiceTemplate.marshalSendAndReceive(
                    LOGIN_URL,
                    new SoapRequest(requestXml),
                    new CustomSoapActionCallback("")
            );

            System.out.println("✅ Odpowiedź serwera GUS (logowanie): " + response.getResult());

            this.sessionId = response.getResult();
            if (sessionId == null || sessionId.isEmpty()) {
                throw new RuntimeException("❌ Nie udało się pobrać sessionId.");
            }
            System.out.println("✅ Zalogowano do GUS, sessionId: " + sessionId);
        } catch (Exception ex) {
            System.err.println("❌ Błąd logowania do GUS: " + ex.getMessage());
            throw new RuntimeException("Błąd logowania do GUS.", ex);
        }
    }
RequiredNickname
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 645
0

Poczytaj na np. baeldung.com jak się konsumuje api soap'owe
Poczytaj czym jest programowanie obiektowe bo piszesz kod proceduralny
Wrzuć sobie swój kod d ochata gpt i poproś aby zrobił Ci review i wskazał inne potencjalne miejsca do poprawy

Mateusz Starosta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0
RequiredNickname napisał(a):

Poczytaj na np. baeldung.com jak się konsumuje api soap'owe
Poczytaj czym jest programowanie obiektowe bo piszesz kod proceduralny
Wrzuć sobie swój kod d ochata gpt i poproś aby zrobił Ci review i wskazał inne potencjalne miejsca do poprawy

Z soap spotykam się pierwszy raz. Jeżeli chodzi o programowanie obiektowe to mniej więcej ogarniam. Co do chata gpt nie jest w stanie mi w niczym pomoc. Cały czas wypluwa to samo ;/

Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Jest coś w logu po za 400?

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.