2016-03-22 13 views
8

実装が必要なREST APIエンドポイントがあり、いくつかの情報を取得し、バックエンド要求を別のサーバに送信し、バックエンドサーバからの応答を送信します最終的な応答に設定する必要があります。私の問題はjavax.ws.rs.core.Responseで応答本文を設定する方法ですか?ここで設定方法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); 
    } 

} 

メッセージは私が設定する必要があるものです。しかし、私はいくつかの方法を試みました。それらのどれも働かなかった。トリックを行う必要があり、次のソリューションの

+2

'return Response.ok(message).build()'? –

答えて

14

ワン:詳細については

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

は、ResponseResponse.ResponseBuilderクラスのドキュメントを見てください。

ヒントResponse.ResponseBuilder APIでは、あなたがHTTP応答にcachecookiesheadersに関連する情報を追加することができますいくつかの有用な方法を見つけるかもしれません。

+1

はい。 'return Response.ok(message).build()'は私のために働きます。また、 'return Response.ok()。entity(message).build()'は動作しませんでした。とにかく感謝とacceped答え – GPrathap

+0

Response.ok(メッセージ).build()は200を返します、私たちはBAD_REQUESTsと同様にいくつかのことを行うことができます。私はカスタムメッセージを追加することを意味します。 – prime

+0

@prime 'return Response.status(Response.Status.BAD_REQUEST).entity(エンティティ).build();' –

関連する問題