How to save a file from jersey response?

java, jersey, rest

Solution

From Java 7 on, you can also make use of the new NIO API to write the input stream to a file:

InputStream is = response.readEntity(InputStream.class)
Files.copy(is, Paths.get(...));

Problem

I am trying to download a SWF file using Jersey from a web resource. I have written the following code, but am unable to save the file properly : ``` Response response = webResource.request(MediaType.APPLICATION_OCTET_STREAM) .cookie(cookie) .post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE)); String binarySWF = response.readEntity(String.class); byte[] SWFByteArray = binarySWF.getBytes(); FileOutputStream fos = new FileOutputStream(new File("myfile.swf")); fos.write(SWFByteArray); fos.flush(); fos.close(); ``` It is save to assume that the response does return a SWF file, as `response.getMediaType` returns `application/x-shockwave-flash`. However when I try to open the SWF, nothing happen (also no error) which suggest that my file was not created from response.

Original source