当前位置: 首页 > 知识库问答 >
问题:

Mulipart呼叫的泽西客户端

秦天宇
2023-03-14

我使用Jersey客户机对一个API进行REST调用,该API返回mulipart中的一个Json和一个PDF文件作为响应的第一和第二部分。

final Client client = ClientBuilder.newClient();
final WebTarget target = client.target(endPoint);
final Builder request = target.request().header("Authorization", authKey);
final Response response = request.get();
final String readEntity = response.readEntity(String.class);

使用上面的客户端解析这个多部分响应的正确方法是什么?

共有1个答案

越雨泽
2023-03-14

一个快速的谷歌搜索会给你结果。您必须启用multipartfeature,并执行response.readentity(inputstream.class)

从http://www.benchresources.net/jersey-2-x-web-service-for-uploadingdownloading-zip-file-java-client/获得以下代码

 // invoke service after setting necessary parameters
        clientConfig = new ClientConfig();
        clientConfig.register(MultiPartFeature.class);
        client =  ClientBuilder.newClient(clientConfig);
        client.property("accept", "application/zip");
        webTarget = client.target(httpURL);

        // invoke service
        invocationBuilder = webTarget.request();
        //          invocationBuilder.header("Authorization", "Basic " + authorization);
        response = invocationBuilder.get();

        // get response code
        responseCode = response.getStatus();
        System.out.println("Response code: " + responseCode);

        if (response.getStatus() != 200) {
            throw new RuntimeException("Failed with HTTP error code : " + responseCode);
        }

        // get response message
        responseMessageFromServer = response.getStatusInfo().getReasonPhrase();
        System.out.println("ResponseMessageFromServer: " + responseMessageFromServer);

        // read response string
        inputStream = response.readEntity(InputStream.class);
        qualifiedDownloadFilePath = DOWNLOAD_FILE_LOCATION + "MyJerseyZippedFile.zip";
        outputStream = new FileOutputStream(qualifiedDownloadFilePath);
        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
 类似资料:
  • 我有一个网站,我只是想写一个脚本,发送字符串到一个文本输入在页面(唯一的一个)和点击提交。我构建了一个selenium系统,但被告知这是矫枉过正的,访问页面上的endpoint并以这种方式发送文本要“容易”得多。 线程“main”java.lang.IllegalStateException中出现异常:未找到InjectionManagerFactory。在org.glassfish.jersey

  • 我设计了一个多部分Jersey REST服务,如下所示,用于接收多部分请求(文件上传)并将文件保存在磁盘位置: 我的测试客户是: 但我无法得到回应。 当我使用HTML网页作为客户端通过调用REST服务上传文件时,它工作得很好,但从REST客户端它不工作。 客户有什么需要更改的吗?

  • 问题内容: 我正在尝试使用Jersey客户端模拟对我的Web服务的HTTP请求。我尝试实现文档中的简单示例。这是我的短代码: 我什至没有实现整个示例,因为当前我在最后一行收到一个异常: 我只将此依赖项添加到我的: 我试图用谷歌搜索问题,以及调试应用程序,但我真的看不出问题出在哪里。 编辑 所有Maven依赖项: 问题答案: 这看起来像与JAX-RS API版本(包含MultiValuedMap)有

  • 当我的客户机应用程序尝试从我的安全RESTWeb服务请求资源时,我得到了粘贴在下面的错误。 我已经在这个主题上找到了这个答案,但是额外的代码似乎很极端。使用泽西岛客户端访问安全的宁静Web服务 有谁知道解决问题的更简单的方法吗? 我的项目:在服务器端,我正在使用jdbc realm的基本身份验证,这在浏览器中使用时工作正常。在客户端,我设置了用户名和密码,当我发送请求时发生错误。如果您需要代码片段

  • 不确定发生了什么,但我不知道我的反应在哪里被劫持了。

  • 正如twilio所说的同时拨号 您可以在动词中使用几个和名词来同时拨打多个电话号码和客户端。第一个接听电话的人将与呼叫者连接,而其余的呼叫尝试将被挂断。 我实现这个功能与描述相同,但是当有人拨打我的twilio号码时,我传递了上面的twiml响应,并且每个客户端都收到传入呼叫,但是当所有客户端之一通过.accept()方法选择呼叫时,没有任何反应,并且呼叫不断为所有客户端响铃。 但是,如果只有一个