Я пытаюсь вызвать @Secured API приложения grails из микросервиса spring-boot с помощью симулированного клиента, а затем получаю эту ошибку.
Я вызываю API приложения springboot от почтальона http://localhost:8180/spring/api/getData
этот API getData внутренне использует симулируемый клиент для получения всех данных из приложения grails.
feign.codec.DecodeException: Не удалось извлечь ответ: не найден подходящий HttpMessageConverter для типа ответа [interface java.util.List] и типа содержимого [text / html; charset = utf-8] вfeign.SynchronousMethodHandler.decode (SynchronousMethodHandler.java:169) в feign.SynchronousMethodHandler.executeAndDecode (SynchronousMethodHandler.java:133) в feign.SynchronousMethodHand: 103) на com.sun.proxy. $ Proxy236.getAllProjects (неизвестный источник) на com.oodles.service.DevopsService.getAllProjectDetails (DevopsService.java:57) на com.oodles.controller.DevopsController.getAllProjectDetails (DevopsControl:45) в com.oodles.controller.DevopsController $$ FastClassBySpringCGLIB $$ 9bc494e0.invoke () в org.springframework.cglib.proxy.MethodProxy.invoke (MethodProxy.java:204) в org.springmeraCglibMethodInvocation.invokeJoinpoint (СglibAopProxy.java:738) в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:157) в org.springframework.security.access.intercept.aopalliance.interception.jor.springframework.aop.framework.$ a02b5d8.getAllProjectDetails () в sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) вторичный захват.lang.reflect.Method.invoke (Method.java:498) в org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:205) в org.springframework.webmet.hod.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:133) в org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMet.in.web.web.method.annotation.Метод.в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:970) в org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:861) в javax.servlet.http.HttpServlet.service (HttpServlet.java:635) в org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:846) в javax.servlet.http.HttpServletSservice: (742) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:231) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) вorg.apache.tomcat.websocket.server.WsFilter.doFilter (ApplicationFilterChain.java:166) в org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal (ApplicationContextHeaderFilter.java:55) в org.springframeworkest_web.filter..apache.catalina.core.(WebRequestTraceFilter.java:110) по адресу org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) по адресу org.apache.catalina.core.ApplicationFilterChain.internalFilter.hater.hater (19)che.catalina.core.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:127) в org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:91) в org.springframework.Proilha.CherterFFJava: 331) в org.springframework.security.web.access.ExceptionTranslationFilter.doFilter (ExceptionTranslationFilter.java:114) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter1 или в финском фильтре.security.web.session.SessionManagementFilter.doFilter (SessionManagementFilter.java:137) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) в org.springframework.security.web.authentication.AnonymousAuthenticationFilter.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:170) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChaestProxy.java.pris.Fraware.FF63) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) по адресу com.oodles.security.JwtAuthorizationFilter.doFilterInternal (JwtAuthorizationFilter.jmeworkFweterFerter.prf.weter.prf..doFilter (OncePerRequestFilter.java:107) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331)по адресу org.springframework.security.web.authentication.logout.LogoutFilter.doFilter (LogoutFilter.java:116) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.raf.rag.meg: org..filter.CorsFilter.: 331) в org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal (HeaderWriterFilter.java:64) в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRejest:10.7)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) в org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter (SecurityContext.web.jp.exservice.F).FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) в org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal (WebAsyncManagerIntegOncePerRequestFilter.java:107) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) по адресу org.springframework.security.web.FilterChainProwork.prg.jpg.jpg.jp.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:177) в org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346) в org.springframework.web.filter.Java: 166) в org.springframework.web.filter.RequestContextFilter.doFilterInternal (RequestContextFilter.java:99) в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequest: 10.cat.j.at.cat)..ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.web.filter.orm.HFFilterFutterFutterPutorg.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:19aporecat) в org.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal (HiddenHttpMethodFilter.java:81) в org.springfilreorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в orf.filterFrater.CharacterEncodingFilter.java:197) в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilhac3) или в приложении ().core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal (MetricsFilter.java:106) в org.springframework.wecePerRequestFilter..apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:198) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96) в org.apache.catheaseBevent.java: 478) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:80) в org.apache.cat.core.StandardEngineValve.invoke (StandardEngineValve.java:87) вorg.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:342) в org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:799) в org.apache.coyote.AbstractProcessorLight.Java: 66) в org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:868) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1455) в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPooExrecutor $: 624) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748). Вызывается: org.springframework.web.client.RestClientException: не удалось извлечь ответ: не найден подходящий HttpMessageConverter для типа ответа [interface java.util.List] и типа содержимого [text / html; charset = utf-8] at org.springframework.web.client.HttpMessageConverterExtractor.extractData (HttpMessageConverterExtractor.java:110) по адресу org.springframework.cloud.netflix.feign.support.SpringDedeco.springframework.cloud.netflix.feign.support.ResponseEntityDecoder.decode (ResponseEntityDecoder.java:47) в feign.SynchronousMethodHandler.decode (SynchronousMethodHandler.java:165) ... 116 больше
при *1011* 1011
1011 *я удаляю аннотацию @Secured из Grails API, тогда она работает нормально, и я получаю все данные.
Когда я вызываю API Grails из почтальона, например, http://localhost:8080/dev/getALLData, а в cookie я передаю токен jwt, тогдаон работает нормально.
Кроме того, мой API Springboot также защищен, и мне нужно передать jwt в заголовок.