Wpis z mikrobloga

Cześć

Potrzebuję pomocy z usługą DataStore https://datastore.ceidg.gov.pl... do której próbuję się dostać za pośrednictwem soap'a z aplikacji wykorzystującej spring boota i jaxb. Mam założone konto na portalu i wygenerowany klucz do api.

wsdl: https://pastebin.com/DswvkmVn
skonfigurowane beany: https://pastebin.com/UJTkQFJV
Klasa rozszerzająca WebServiceGatewaySupport: https://pastebin.com/JXYZRe9Z
Klasa startująca aplikację i testująca strzał do usługi: https://pastebin.com/nYp82tcR
Wyjątek który leci: https://pastebin.com/N95LQ5HQ

To moje pierwsze zetknięcie z soap'em i ta usługą. Coś robię źle, ale na podstawie WSD:'a nie jestem w stanie wywnioskować czy czegoś nie przesyłam czy co. Klucz do api jest, nip którego dane chcę wyszukać również podaję. Dodam, że na podstawie WSDL'a maven wygenerował mi odpowiednie klasy, plugin w pomie również jest.

#java #programowanie #naukaprogramowania #spring
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Generyczny_nick: to API to rak, ja osiwiałem przy tym. Nawet jak to odpalisz (visual code mi zbudował działającego klienta w c#) to jest jeszcze problem bo zwrot to string XML, który pasuje owszem parsuje się jak w tym podanym przykładowym xdsie ale api go zwraca jako string więc odpowiedź musisz zapisać w pamięci całą, sparsować i dopiero masz dane na których możesz coś robić.
  • Odpowiedz
@Generyczny_nick: wygląda jak normalny g---o-wsdl z generatora microsoftu. Są gorsze serwisy, np. GUS, CEP, UFG.

Zanim cokolwiek zakodujesz, to strzelasz soapui i sprawdzasz, czy to w ogóle działa. Na UFG potrafi przychodzić zwrotka niezgodna z WSDL i trzeba z palca go poprawić.

Jak już wiesz jak ma wyglądać payload, to robisz w swoim ulubionym frameworku (CXF/Spring WS).

a błąd ci leci, bo nie podajesz nagłówka soapAction
  • Odpowiedz
@globalbus: Zgadza się, dodałem w metodzie soapActionCollback:
GetMigrationData201901Response response =
(GetMigrationData201901Response) getWebServiceTemplate().marshalSendAndReceive(request,
new SoapActionCallback("
  • Odpowiedz
@globalbus: xsd znalazłem dopiero po zalogowaniu się na datastore.ceidg.gov.pl.
W intellij (nie wiem czy w wersji community to jest), po otwarciu pliku xsd po wybraniu tools -> JAXB -> Generate Java code from XML Schema using JAXB... można sobie wygenerować klasy reprezentujące obiekt.

fragment kodu dla zobrazowania:

GetMigrationData201901Response response
  • Odpowiedz