Hi ,
I am trying to set up a route that 1) receives a http get request 2) extract a query parameter from the HttpRequest. 3) forward the extracted query parameter to another endpoint. 4) Return an 1 by 1 pixel image to the http get request sender. I managed to do all the above, but the returned 1 by 1 image also contains the original query parameter. Below is my code. public class JettyHttpServerDemo { private CamelContext context; public void run() throws Exception { context = new DefaultCamelContext(); // add our route to the CamelContext context.addRoutes(new RouteBuilder() { @Override public void configure() { from("jetty:http://localhost:8081/test?matchOnUriPrefix=true") .process(new ImageProcessor()).to("stream:out"); } }); context.start(); Thread.sleep(1000000); } private static class ImageProcessor implements Processor { private BufferedImage pixel; public ImageProcessor() { pixel = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); pixel.setRGB(0, 0, (0xFF)); } public void process(Exchange exchange) throws Exception { HttpServletRequest request = exchange.getIn().getBody( HttpServletRequest.class); String name = request.getParameter("name"); exchange.getIn().setBody("name=" + name); // send a response with 1 pixel. HttpServletResponse response = exchange.getIn().getBody( HttpServletResponse.class); response.setContentType("image/png"); OutputStream os = response.getOutputStream(); ImageIO.write(pixel, "png", os); } } public static void main(String[] args) throws Exception { JettyHttpServerDemo demo = new JettyHttpServerDemo(); demo.run(); } ----------------- public class JettyHttpGetClient { private CamelContext context; public void send() throws Exception{ context = new DefaultCamelContext(); ProducerTemplate template = context.createProducerTemplate(); Exchange exchange = template.send("http://localhost:8081/test", new Processor() { public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(Exchange.HTTP_QUERY, "name=foo"); } }); Message out = exchange.getOut(); InputStream reply = (InputStream) exchange.getOut().getBody(); // replyStr also contains the query parameter name=foo ! String replyStr= inputStreamToString(reply); System.out.println("Response from http server has size :"+ replyStr.length()); System.out.println("Response from http server is :"+ replyStr); System.out.println("status header is "+out.getHeader(Exchange.HTTP_RESPONSE_CODE)); } private String inputStreamToString(InputStream inputStream) throws Exception{ BufferedReader in = new BufferedReader( new InputStreamReader(inputStream)); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); return response.toString(); } public static void main(String [] args) throws Exception{ JettyHttpGetClient client = new JettyHttpGetClient(); client.send(); } } ----------------------------- In debug mode, I can see that replyStr also contains "name=foo". Is there a way to return a 1 by 1 pixel image without the original query parameter ? Thanks in advance for any assistance ! Shing