Jersey 客户端下载并保存文件

2023-11-27

我是球衣/JAX-RS 实施的新手。 请在下面找到我的球衣客户端代码来下载文件:

 Client client = Client.create();
 WebResource wr = client.resource("http://localhost:7070/upload-0.0.1-SNAPSHOT/rest/files/download");
 Builder wb=wr.accept("application/json,application/pdf,text/plain,image/jpeg,application/xml,application/vnd.ms-excel");
 ClientResponse clientResponse= wr.get(ClientResponse.class);
 System.out.println(clientResponse.getStatus());
 File res= clientResponse.getEntity(File.class);
 File downloadfile = new File("C://Data/test/downloaded/testnew.pdf");  
 res.renameTo(downloadfile);
 FileWriter fr = new FileWriter(res);
 fr.flush();

我的服务器端代码是:

@Path("/download")
    @GET
    @Produces({"application/pdf","text/plain","image/jpeg","application/xml","application/vnd.ms-excel"})
    public Response getFile()
    {

        File download = new File("C://Data/Test/downloaded/empty.pdf");
        ResponseBuilder response = Response.ok((Object)download);
        response.header("Content-Disposition", "attachment; filename=empty.pdf");
        return response.build();
    }

在我的客户端代码中,我得到的响应为 200 OK,但我无法将文件保存在硬盘上 在下面的行中,我提到了需要保存文件的路径和位置。 不知道这里出了什么问题,任何帮助将不胜感激。提前致谢!

File downloadfile = new File("C://Data/test/downloaded/testnew.pdf");

对于仍在寻找解决方案的人们,这里是有关如何将 jaxrs 响应保存到文件的完整代码。

public void downloadClient(){
    Client client = ClientBuilder.newClient();
    WebTarget target = client.target("http://localhost:7070/upload-0.0.1-SNAPSHOT/rest/files/download");

    Response resp = target
      .request("application/pdf,image/jpeg,application/xml,application/vnd.ms-excel")
      .get();

    if(resp.getStatus() == Response.Status.OK.getStatusCode())
    {
        InputStream is = resp.readEntity(InputStream.class);
        fetchFeed(is); 
        //fetchFeedAnotherWay(is) //use for Java 7
        IOUtils.closeQuietly(is);
        System.out.println("the file details after call:"+downloadfile.getAbsolutePath()+", size is "+downloadfile.length());
    } 
    else{
        throw new WebApplicationException("Http Call failed. response code is"+resp.getStatus()+". Error reported is"+resp.getStatusInfo());
    }
}
/**
* Store contents of file from response to local disk using java 7 
* java.nio.file.Files
*/
private void fetchFeed(InputStream is){
    File downloadfile = new File("C://Data/test/downloaded/testnew.pdf");  
    byte[] byteArray = IOUtils.toByteArray(is);
    FileOutputStream fos = new FileOutputStream(downloadfile);
    fos.write(byteArray);
    fos.flush();
    fos.close();
}

/**
* Alternate way to Store contents of file from response to local disk using
* java 7, java.nio.file.Files
*/
private void fetchFeedAnotherWay(InputStream is){
    File downloadfile = new File("C://Data/test/downloaded/testnew.pdf");  
    Files.copy(is, downloadfile.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jersey 客户端下载并保存文件 的相关文章

  • Java泛型 - 实现像map这样的高阶函数

    我决定用 Java 编写一些常见的高阶函数 map filter reduce 等 这些函数通过泛型实现类型安全 但我在一个特定函数中遇到通配符匹配问题 为了完整起见 函子接口是这样的 The interface containing th
  • 如何调试使用maven构建的android应用程序

    我目前正在尝试从 Eclipse 调试我的设备上的 Android 应用程序 设备已添加 我可以在控制台和 Eclipse 中看到它 控制台 Windows adb devices List of devices attached 0019
  • 如何在谷歌地图中使用latlng字符串数组绘制多边形

    在我的应用程序中 我有包含 imagview 的 recyclerview 并且该 imageview 通过使用我存储在 sqlite 中的坐标包含静态地图图像 当我单击该图像时 我将该字符串数组格式的坐标传递给其他地图活动 然后使用该字符
  • 使用 Nginx 时缺少 HTTP 状态代码名称

    我正在使用 Nginx 将所有 HTTP 请求重定向到 HTTPS 在我的 Spring Boot 应用程序中 这是我正在使用的 nginx 配置 通过它我可以将所有请求重定向到 Https 但是当我这样做时 我得到了状态码返回正确 但没有
  • 为什么byteArray的长度是22而不是20?

    我们尝试从字符串转换为Byte 使用以下 Java 代码 String source 0123456789 byte byteArray source getBytes UTF 16 我们得到一个长度为 22 字节的字节数组 我们不确定这个
  • 使用 google-api-java-client 的 2 足 OAuth

    有谁知道如何将 2 legged OAuth 与 google api java client 一起使用 我正在尝试访问 Google Apps 配置 API 以获取特定域的用户列表 以下不起作用 HttpTransport transpo
  • Maven 2 未运行 Junit 4 测试

    我在确保运行 Junit4 测试时遇到问题 同样的问题也被报告在https stackoverflow com questions 2021771 sort newest sort top https stackoverflow com q
  • Java 中支持多少维数组,例如 a[1][1][1][1]....[1]? [复制]

    这个问题在这里已经有答案了 Java支持多少维数组a 1 1 1 1 1 我可以为数组声明无限数量的维度吗 数组维数限制为 255 有趣的是 JLS定义的Java编程语言没有这样的限制 但是你可以在JVM规范 http docs oracl
  • IntSummaryStatistics的summaryStatistics方法

    为什么空 IntStream 上的 summaryStatistics 方法返回整数的最大和最小值作为流中存在的最大和最小 int 值 IntStream intStream IntStream of IntSummaryStatistic
  • 如何使 ScheduledExecutorService 在计划任务取消时自动终止

    我正在使用一个ScheduledExecutorService如果网络连接已打开超过几个小时 则关闭该连接 然而 在大多数情况下 网络连接在超时之前就关闭了 所以我取消了ScheduledFuture 在这种情况下 我还希望执行程序服务终止
  • FXML 文件中的 getHostServices().showDocument()

    有没有简单的方法可以将 getHostServices showDocument 命令放入 toHomepage 方法中 而不是执行一行又一行的代码 这样代码应该看起来干净简单 package sample import javafx ap
  • a4j:commandLink 重新渲染后停止工作

    我创建了这个测试用例来隔离我的问题 一旦轮询执行 ajax 更新 a4j commandLink 操作就不会执行 如果我们在轮询重新渲染之前关闭 modalPanel 则会执行它 有什么建议吗 提前致谢 测试 xhtml
  • Spring Boot 多部分文件始终为 null

    我正在使用 Spring Boot version 1 4 0 RC1 和 Spring Boot Stormpath 1 0 2 我正在尝试使用分段文件上传 但控制器中的 MultipartFile 始终为空 当我使用 RequestPa
  • iText7 将 SVG 添加到 PdfDocument 中以及可能出现的问题

    关于问题的答案 如何使用 iText7 将 SVG 添加到 PDF 这是一个链接点击这里 https stackoverflow com questions 50059456 how to add an svg to a pdf using
  • Java XML 解析器添加不必要的 xmlns 和 xml:space 属性

    我在 Windows 10 上使用 Java 11 AdoptOpenJDK 11 0 5 2019 10 15 我正在解析一些旧版 XHTML 1 1 文件 这些文件采用以下一般形式
  • 如何从Java中的连接获取查询字符串?

    我正在编写一个方法 尝试记录数据库调用 形成连接到它的连接 在查询之后 有很多地方调用方法 connect 来启动并调用 cleanUp 方法来结束 我不能并且不想修改每个地方 所以顺序是这样的 Connection con connect
  • Java“非法访问操作”方法将被弃用? [复制]

    这个问题在这里已经有答案了 JDK 9 JVM 发出非法访问操作警告后 如果您使用一些非法访问 例如setAccessible 我的问题 Is setAccessible 以后会被封吗 此功能的官方参考 如果将被弃用 在哪里 我在任何地方都
  • 文档过滤器在 Java 中不起作用?

    在超过 10 个字符的文本字段中 它必须显示错误 为此 我使用了文档过滤器 JTextField field JTextField txtFld AbstractDocument document AbstractDocument fiel
  • 混合语言源目录布局

    我们正在运行一个使用多种不同语言的大型项目 Java Python PHP SQL 和 Perl 到目前为止 人们一直在自己的私有存储库中工作 但现在我们希望将整个项目合并到一个存储库中 现在的问题是 目录结构应该是什么样的 我们应该为每种
  • REST API 路由最佳实践

    我想知道当订单是一种资源时 为以下场景创建 REST API 的最佳实践是什么 获取数据库中的所有订单 当然不是实际场景 仅供理解 通过订单ID获取订单 根据订单ID获取单个订单 单个 GET 路由是否可以用于所有这些场景 或者我们应该针对

随机推荐

  • 无法将 PySide 与 Anaconda 一起使用

    我刚刚安装了 Anaconda for Python 3 然后安装了 PySide sudo apt get install python3 pyside 然后我尝试使用它抛出 Anaconda 的 python 版本并输入import P
  • 如何将 int[] 转换为 byte[]

    我有一个代表 RGB 图像的整数数组 希望将其转换为字节数组并将其保存到文件中 在 Java 中将整数数组转换为字节数组的最佳方法是什么 As Brian说 你需要弄清楚你需要什么样的转换 您想将其保存为 普通 图像文件 jpg png 等
  • OpenCV:了解内核

    我的书谈到了 OpenCV 中的图像内核概念 当计算在像素邻域上完成时 通常 用核矩阵表示它 该内核描述了如何 将参与计算的像素组合起来以获得 期望的结果 在图像模糊技术中 我们使用内核大小 cv GaussianBlur inputIma
  • C++ 中高效的线程安全单例

    单例类的通常模式是这样的 static Foo getInst static Foo inst NULL if inst NULL inst new Foo return inst 但是 据我了解 此解决方案不是线程安全的 因为 1 Foo
  • 在自托管 WebApi 中获取 HttpRequest 上下文

    如何从自托管 MVC WebAPI 访问查询字符串 对以下内容的调用因 NRE 失败 因为 Current 为空 又名 null System Web HttpContext Current Request myQuery 我需要访问控制器
  • 使用 boost::asio 的 AF_NETLINK (netlink) 套接字

    我正在编写基于的多播客户端 服务器应用程序this and this 效果很好 但是 当计算机中的活动网络接口数量发生变化时 我还需要执行一些操作 例如示例部分中的程序这一页 does 我想我应该使用 boost asio local 中的
  • 在 Windows 服务中运行 cdb 时无法下载 microsoft 符号

    我有一个 NET窗口服务那是在呼唤cdb exe分析故障转储 我想从以下位置下载符号http msdl microsoft com需要时自动使用参数 y srv c symbols http msdl microsoft com downl
  • Python 文件到 MSI Windows 安装程序

    因此 我可以使用 PyInstaller 制作一个单文件可执行文件 并在文件夹中的其他文件中制作标准可执行文件 但是如何将 Python 文件转换为 MSI 安装程序 以便万无一失地在桌面上创建快捷方式呢 用于分发 以便用户不需要安装Pyt
  • Excel进程未关闭[重复]

    这个问题在这里已经有答案了 我有这个 C 程序 它永远不会关闭 Excel 进程 基本上 它会查找某个字符串在 Excel 中某个范围内出现的实例数 我尝试了各种方法 但没有效果 有一个表单正在调用此方法 但这不会改变进程未关闭的原因 我看
  • JQuery / JS:检测用户的滚动尝试,没有任何窗口溢出滚动到

    我正在开发一个过渡网站 虽然我想使用用户的滚动尝试作为过渡启动器 但我不希望有窗口滚动条 现在 我只是用 jquery 检测用户滚动 我已经将窗口大小设置为比用户屏幕的滚动条高 1px 尽管这是我试图避免的 scroll function
  • [Android]NumberPicker 选中项改变颜色

    是否可以更改 numberpicker 中所选项目的颜色 以便每次出现新的中心子 TextView 时将其颜色更改为我喜欢的颜色 但我没有找到任何与此相关的样式或 API 公开 I tried to follow many answers
  • 更改 Chrome 4xx 页面

    我正在部署一个信息亭系统 该系统使用 Chrome 来显示在 jetty 中运行的 java web 应用程序 该应用程序以 Windows 服务包装器启动 系统启动后需要一些时间才能让 jetty 准备好提供内容 因此现在我需要等待 然后
  • 如何按照声明的顺序读取类属性?

    我正在编写一个读取类属性并将它们存储在列表中的元类 但我希望列表 cls columns 尊重声明顺序 即 mycol2 mycol3 zut cool menfin a在我的例子中 import inspect import pprint
  • ActiveMQ Jolokia API 如何获取完整的消息正文

    我想编写自己的 ActiveMQ 监视器 我可以从队列中获取队列和消息 但消息正文 内容 很短 如何获得完整的消息正文 这个我已经测试过了 Get Always errors http localhost 8161 api jolokia
  • 按行数拆分数据框

    我有一个由 400 000 行和大约 50 列组成的数据框 由于这个数据帧太大 处理起来计算量太大 我想将此数据帧分割成更小的数据帧 然后运行我想要运行的函数 然后最后重新组装数据帧 我没有想用来分割此数据框的分组变量 我只想按行数将其拆分
  • Rails/ActiveRecord:将更改保存到模型的关联集合

    我是否必须保存对模型集合中各个项目的修改 或者是否可以在保存模型时调用一种方法来保存它们 save似乎没有这样做 例如 irb gt rental gt
  • 使用 PowerShell 以 UTF-8 写入无 BOM 的文件

    Out File使用 UTF 8 时似乎会强制使用 BOM MyFile Get Content MyPath MyFile Out File Encoding UTF8 MyPath 如何使用 PowerShell 以 UTF 8 格式写
  • 创建已完成的任务

    我正在实现一个方法Task
  • Scala“<-”用于理解

    我发现 Scala 总是对任何事情都有 自然的解释 总是类似 哦 但这只是用这个和那个参数在这个和那个对象上调用的函数 从某种意义上说 没有什么是真正像我们从其他语言中了解到的那样具有编译器魔力 我的问题是关于 lt 运算符如以下代码中所使
  • Jersey 客户端下载并保存文件

    我是球衣 JAX RS 实施的新手 请在下面找到我的球衣客户端代码来下载文件 Client client Client create WebResource wr client resource http localhost 7070 up