InputStream Problem at Client Side
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
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
Code :
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
Code :
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..
Re: InputStream Problem at Client Side
Well the time spent between creating g and f is only creating the inputstream, its not actually loading/sending any data, your simply saying create me an inputstream to the following file. Java will do that in a couple of milliseconds or less.
What kind of processing are you supposed to be calculating?
// Json