Hi all once again, one more question from me. But this one stands between me and my final work. I am doing a REST Webservice, in which I have to send image files from the server and had to calculate processing times at the client. So, I choosen InputStream at the server, and same to catch at the Client. Seems some basic problem, I am measuring time before and after InputStream at Client..seems since its a stream as soon as receiving some bytes the program was coming to the next....better to put it in code... REST Web Service and i am using Netbeans 6.8
Server COde
@Path("/restserver/image23") public class imagetest23 { @Context private UriInfo context; /** Creates a new instance of imagetest1 */ public imagetest23() { } @GET @Path("{id}") //@Produces ("StreamingOutput/text") public InputStream GettheFile(@PathParam ("id") String cId) throws Exception { File file = new File("C:/"+cId+".png"); InputStream in = null; //File file = new File("C:/fone.gif"); FileInputStream fs = new FileInputStream(file); // int cid=01; in = new BufferedInputStream(new FileInputStream(file)); return in; } }
And at the Client Side
private static void testgettingfiles() throws IOException, WebApplicationException, HttpException, java.sql.SQLException,java.lang.ClassNotFoundException, com.sun.jersey.api.client.UniformInterfaceException { System.out.println("coming to here, start of the getmethod in client"); final String BASE_URI = "http://xxxxx:8080/RestApplication-Server/resources"; System.out.println("the value of string"+BASE_URI); System.out.println("coming to here before start of client"); Client c = Client.create(); WebResource service = c.resource(BASE_URI); System.out.println("coming to here after baseuri"); System.out.println("the time before fetching starts:"); long g= System.currentTimeMillis(); InputStream in=service.path("/restserver/image12").get(InputStream.class); long f=System.currentTimeMillis(); System.out.println("the total time :"+(f-g)); }
So thats the problem ..no matter the size of the image files (trying from 5 mb to 50mb) the processing time is just few milli seconds and almost the same..
tried a bit logic to convert the files
BufferedImage bi1 = ImageIO.read(in); System.out.println("the time after fetching"); long f=System.currentTimeMillis(); File file = new File("newimage1.png");//(dint changed)changing to .gif ImageIO.write(bi1, "png", file);//(dint changed)changing to .gif FileInputStream fs = new FileInputStream(file);
But getting different size files...and if i take the time here, it also includes conversion and saving file locally times....Since its REST and i test with a plane url and its returning same files size ( tried right click and save as )...
Thanks in advance guys,...spent whole night on this..