我试图从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.
解决方法
我终于得到了它的工作.
我想出了阅读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();