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.
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.
@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ć.
@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
@globalbus: Zgadza się, dodałem w metodzie soapActionCollback: GetMigrationData201901Response response = (GetMigrationData201901Response) getWebServiceTemplate().marshalSendAndReceive(request, new SoapActionCallback("
@Generyczny_nick: nie parser, tylko jaxb, który tak czy siak jest zdefiniowany dla spring-ws. Musisz tylko zbudować klasy dla tego wewnętrznego xsd i podpiąć pod jaxbcontext.
@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.
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
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
GetMigrationData201901Response response =
(GetMigrationData201901Response) getWebServiceTemplate().marshalSendAndReceive(request,
new SoapActionCallback("
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