I can't say where the response body is being consumed, but try enabling stream caching[1] and see what you get.
Doug [1] http://camel.apache.org/stream-caching.html On Tue, Oct 25, 2016 at 9:31 AM, Steve Huston <shus...@riverace.com> wrote: > I am developing a route that calls a web service; said web service returns > a JSON string (Not always the same type represented). I have this in a > route as: > > from(myqueue) > .bean(SetupCxfRequest.class) // This sets up parameters for > REST API call > .convertBodyTo(org.apache.cxf.message.MessageContentsList.class) > .to("cxfrs:bean:ws?throwExceptionOnFailure=false") > .bean(WebServiceResponse.class) > > SetupCxfRequest will: > exchange.setPattern(ExchangePattern.InOut); > // Indicate using Proxy API. > in.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, > Boolean.FALSE); > in.setHeader(CxfConstants.OPERATION_NAME, VerifyEmployeeRequest); > > The web service interface method for the call in question is: > @GET > @Path(value="/authentication/{company}/employees/{id}") > @Produces({ MediaType.APPLICATION_JSON }) > public Response VerifyEmployeeRequest(@PathParam("company") String > scac, > @PathParam("id") String id, > @QueryParam("pin") String pin, > @QueryParam("reason") String > reason); > > The case I'm working now is that the web service is called and it returns > a 404 status with a body of JSON-marshaled stuff I need to get at. > From my route above, WebServiceResponse is then called as: > > public class WebServiceResponse { > > @Handler > public Object convertWebServiceResponse(Response wsResponse, > Exchange exchange) throws IOException { > ObjectMapper unmarshaller = new ObjectMapper(); > Class<?> target = null; > Message in = exchange.getIn(); > int opStatus = wsResponse.getStatus(); > if (opStatus == 200) > target = EmployeeVerificationResponseAccept.class; > else > target = EmployeeVerificationResponseDeny.class; > > So far, so good - opStatus is 404. I need to get the string which is the > response body and then unmarshall it. > wsResponse.entity is a SequenceInputStream and one of the input streams > appears to be the string I'm expecting from the web service; however, it > has been completely consumed (length and position are the same). Where did > it go, and how can I get it? > > Thanks, > -Steve > >