Reputation: 31
@RequestBody User user I have a interceptor that reads the request body and I saw Http Servlet request lose params from POST body after read it once. here Http Servlet request lose params from POST body after read it once That it can only be read once How to make All the requests(body) cacheable so that it can be read multiple Times using spring boot ?
INFO c.h.c.i.IncomingRequestLoggingInterceptor - [CLIENT REQUEST] method='POST' uri='/unregistertoken' query='null' body='{"parma1":"test","param2":"test"}'
2017-06-28 15:18:36.918 (-07:00) default [http-nio-7443-exec-4] DEBUG o.s.web.cors.DefaultCorsProcessor - Skip CORS processing: request is from same origin
2017-06-28 15:18:36.919 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.method.annotation.RequestParamMethodArgumentResolver@7733f9cf] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.920 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.method.annotation.RequestParamMapMethodArgumentResolver@a2a23a] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.920 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.PathVariableMethodArgumentResolver@423a8bf5] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.920 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.PathVariableMapMethodArgumentResolver@2627aff1] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.920 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.MatrixVariableMethodArgumentResolver@1c17a17] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.920 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.MatrixVariableMapMethodArgumentResolver@195780b9] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.920 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor@13cc4046] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.920 (-07:00) default [http-nio-7443-exec-4] TRACE o.s.w.m.s.HandlerMethodArgumentResolverComposite - Testing if argument resolver [org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor@3a59edcb] supports [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest]
2017-06-28 15:18:36.939 (-07:00) default [http-nio-7443-exec-4] DEBUG o.s.w.s.m.m.a.RequestResponseBodyMethodProcessor - Read [class com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest] as "application/json;charset=UTF-8" with [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@36d1321]
2017-06-28 15:18:36.941 (-07:00) default [http-nio-7443-exec-4] DEBUG o.s.w.s.m.m.a.ServletInvocableHandlerMethod - Failed to resolve argument 0 of type 'com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest'
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public org.springframework.http.ResponseEntity<org.springframework.http.ResponseEntity<java.lang.String>> com.ews.appws.application.controller.CoreWebserviceController.unregistrerToken(com.ews.appws.application.repository.paymentRepo.UnRegisterTokenRequest) throws com.fasterxml.jackson.core.JsonProcessingException
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:154)
Upvotes: 1
Views: 1619
Reputation: 61
You can not read request multiple times because you load the body so you could work with it. Another possible solution is broke this request to two separate requests. The first is interceptor and its gonna do some stuff and after this stuff it sends request to the second one private API.
p.s. Why do you need read the request before?
Upvotes: 0