Java – how do I save a file from a Jersey response?

I tried to download swf files from web resources using Jersey

I wrote the following code, but I couldn't save the file correctly:

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();

Assume that the response does return the SWF file because the response Getmediatype returns application / x-shockwave-flash

However, when I tried to open SWF, nothing happened (and there were no errors), indicating that my file was not created from the response

Solution

I finally got its job

I came up with the idea of reading the Jersey API. I can directly use getentity to retrieve the InputStream of the response (assuming it has not been read)

Use getentity to retrieve InputStream and ioutils#tobytearray. It creates a byte array from InputStream. I try to make it work:

Response response = webResource.request(MediaType.APPLICATION_OCTET_STREAM)
  .cookie(cookie)
  .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE));                                                  

InputStream input = (InputStream)response.getEntity();

byte[] SWFByteArray = IoUtils.toByteArray(input);  

FileOutputStream fos = new FileOutputStream(new File("myfile.swf"));
fos.write(SWFByteArray);
fos.flush();
fos.close();

Note that ioutils is a common Apache function

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>