java - 如何在 javax.ws.rs.core.Response 中设置 Response body

标签 java web-services rest jakarta-ee jax-rs

有一个需要实现的 REST API 端点用于获取一些信息并将后端请求发送到另一个服务器,来自后端服务器的响应必须设置为最终响应。我的问题是如何在 javax.ws.rs.core.Response 中设置响应主体?

@Path("analytics")
@GET
@Produces("application/json")
public Response getDeviceStats(@QueryParam("deviceType") String deviceType,
                               @QueryParam("deviceIdentifier") String deviceIdentifier,
                               @QueryParam("username") String user, @QueryParam("from") long from,
                               @QueryParam("to") long to) {

    // Trust own CA and all self-signed certs
    SSLContext sslcontext = null;
    try {
        sslcontext = SSLContexts.custom()
                .loadTrustMaterial(new File(getClientTrustStoretFilePath()), "password## Heading ##".toCharArray(),
                        new TrustSelfSignedStrategy())
                .build();
    } catch (NoSuchAlgorithmException e) {
        log.error(e);
    } catch (KeyManagementException e) {
        log.error(e);
    } catch (KeyStoreException e) {
        log.error(e);
    } catch (CertificateException e) {
        log.error(e);
    } catch (IOException e) {
        log.error(e);
    }
    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
            sslcontext,
            new String[] { "TLSv1" },
            null,
            SSLConnectionSocketFactory.getDefaultHostnameVerifier());
    CloseableHttpClient httpclient = HttpClients.custom()
            .setSSLSocketFactory(sslsf)
            .build();
    HttpResponse response = null;
    try {
        HttpGet httpget = new HttpGet(URL);
        httpget.setHeader("Authorization", "Basic YWRtaW46YWRtaW4=");
        httpget.addHeader("content-type", "application/json");
        response = httpclient.execute(httpget);
        String message = EntityUtils.toString(response.getEntity(), "UTF-8");
    } catch (ClientProtocolException e) {
        log.error(e);
    } catch (IOException e) {
        log.error(e);
    } 

}  

这里的message是我需要设置的。但是我尝试了几种方法。没有工作他们中的任何一个。

最佳答案

以下解决方案之一应该可以解决问题:

return Response.ok(entity).build();
return Response.ok().entity(entity).build();

有关更多详细信息,请查看 ResponseResponse.ResponseBuilder类文档。

提示:在Response.ResponseBuilder API,您可能会发现一些有用的方法,允许您添加与 cache 相关的信息, cookiesheaders到 HTTP 响应。

关于java - 如何在 javax.ws.rs.core.Response 中设置 Response body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36152231/

相关文章:

java - 避免apache kafka消费者重复消息的有效策略

java - 为什么 java.net.HttpURLConnection 响应无法识别的字符?

java - 如何解析 Play 2.3.x 中 WebService 调用的响应

web-services - 微服务架构 : Cross Service data sharing

angularjs - 如何取消 RestAngular promise .then()?

reactjs - Axios POST 请求 413(有效负载太大)

java - 如何使用 Jersey 2.0 发布表单

java - @SuppressWarnings 带注释的参数限定规则

java - 如何将 Pentaho 数据服务 JDBC 驱动程序安装到我的 java 后端应用程序?

java - 在启动时将 jar 文件添加到类路径