java - StreamingOutput 的 Jersey 2 客户端

标签 java jersey-2.0 jersey-client

我有一个 Jersey 服务将二进制数据输出为 StreamingOutputMediaType.APPLICATION_OCTET_STREAM

如何使用 Jersey 2 实现客户端来处理来自此类服务的响应

最佳答案

下面是一种实现 Jersey 2 客户端的方法,用于从 REST 服务下载文件,该服务返回二进制数据作为 StreamingOutputMediaType.APPLICATION_OCTET_STREAM -

    Client client = ClientBuilder.newClient();
    // change SERVER_URL, API_PATH and PATH as per REST API details
    WebTarget webTarget = client.target(SERVER_URL).path(API_PATH).path(PATH);

    Invocation.Builder invocationBuilder = webTarget.request();
    Response response = invocationBuilder.get();

    String contentDispositionHeader = response.getHeaderString("Content-Disposition");
    String fileName = contentDispositionHeader
            .substring(contentDispositionHeader.indexOf("filename=") + "filename=".length()).replace("\"", "");

    InputStream responseStream = response.readEntity(InputStream.class);

    // Set location here where you want to store downloaded file. 
    // It will replace the file if already exist in that location with same name.
    Files.copy(responseStream, Paths.get("H:/"+ fileName), StandardCopyOption.REPLACE_EXISTING);

    System.out.println("File is downloaded");

关于java - StreamingOutput 的 Jersey 2 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22217660/

相关文章:

java - 如何重启 kubernetes 服务的多个 spring boot 应用程序实例

java - 使用 Jersey 通过 RESTfull 服务上传文件和资源配置不可修改?

rest - Jersey REST get 返回 java.lang.NoSuchMethodError

java - 通用类型的 Jersey ClientResponse.getEntity

JavaFX TabPane : How to set the selected tab

java - 一个 JPanel 中存在多个 JComboBox

java - 将 Jersey 从 1.x 迁移到 2.x 时出现编译错误

java - 无法读取响应输出中的 application/json 消息

jersey - 注释 Web 方法参数时,JAX-RS Jersey 客户端获得 400 响应

java - android ListView 适配器手动调用 getview 方法(刷新列表行)