java – 如何从泽西响应中保存文件?
发布时间:2020-05-24 19:51:10 所属栏目:Java 来源:互联网
导读:我试图从Web资源使用Jersey下载SWF文件. 我写了以下代码,但无法正确保存文件: Response response = webResource.request(MediaType.APPLICATION_OCTET_STREAM) .cookie(cookie) .post(Entity.entity(form, MediaType.APPLICATION_FORM_URLENC
|
我试图从Web资源使用Jersey下载SWF文件. 我写了以下代码,但无法正确保存文件: 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();
假设响应确实返回SWF文件,因为response.getMediaType返回application / x-shockwave-flash. 但是,当我尝试打开SWF时,没有任何事情发生(也没有错误),这表明我的文件不是从响应中创建的. 解决方法我终于得到了它的工作.我想出了阅读Jersey API,我可以直接使用getEntity来检索响应的InputStream(假设它尚未被读取). 使用getEntity检索InputStream和IOUtils#toByteArray,它从InputStream创建一个字节数组,我设法让它工作: 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();
请注意,IOUtils是一个常见的Apache函数. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
