2016-07-12 6 views
0

私は、Jerseyの次の残りのクライアント実装を使用して休憩サービスを消費します。これを正常に実行できます。さらに、リクエストパラメータを送信する必要がありますプロデューサ側のHttpServletRequestJerseyクライアントを使用してhttpリクエストパラメータを送信する方法

消費者側ジャージークライアントコード

private ClientResponse getWebClientResponse(String RESOURCE_PATH, String methodType, Object requestObj) { 
    WebResource webResource; 
    ClientResponse response = null; 
    try { 
     String environmentHost = EnvironmentUtil.resolveEnvironmentHost(); 
     Client client = prepareClient(); 
     String RWP_BASE_URI = environmentHost + "/workflow/rest"; 
     webResource = client.resource(RWP_BASE_URI); 
     WebResource path = webResource.path(RESOURCE_PATH); 
     if (GET.equals(methodType)) { 
      response = path.type(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(
       ClientResponse.class); 
     } else if (POST.equalsIgnoreCase(methodType)) { 
      response = path.type(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(ClientResponse.class, requestObj); 
     } 
    } catch (Exception e) { 
     throw new RuntimeException(e.getMessage()); 
    } 
    return response; 
} 

プロデューサー側

@Context 
public void setContext(SecurityContext context) { 
    this.context = context; 
} 

public HttpServletRequest getRequest() { 
    return request; 
} 

@Context 
public void setRequest(HttpServletRequest request) { 
    this.request = request; 
} 

public String getSessionUserPID(final HttpServletRequest request, 
           final SecurityContext context) { 
    if (request.getSession(false) == null) { 
     final String exceptionMessage = "getSessionUserPID() failed, session NOT FOUND for this request"; 
     final Response response = Response.status(ExceptionStatus.UNAUTHORIZED.getNumber()) 
       .entity(exceptionMessage).build(); 
     LOG.error(exceptionMessage); 
     throw new WebApplicationException(response); 
    } 

    if (context.getUserPrincipal() == null) { 
     final String exceptionMessage = "getSessionUserPID() failed, user principal NOT FOUND"; 
     final Response response = Response.status(ExceptionStatus.UNAUTHORIZED.getNumber()) 
       .entity(exceptionMessage).build(); 
     LOG.error(exceptionMessage); 
     throw new WebApplicationException(response); 
    } 

    final String userPID = context.getUserPrincipal().getName(); 
    if (userPID == null || userPID.isEmpty()) { 
     final String exceptionMessage = "getSessionUserPID() failed, user principal name cannot be null or empty"; 
     final Response response = Response.status(ExceptionStatus.UNAUTHORIZED.getNumber()) 
       .entity(exceptionMessage).build(); 
     LOG.error(exceptionMessage); 
     throw new WebApplicationException(response); 
    } 

    return userPID; 
} 

ここでの主な目的は、現在、私は、WebLogicセキュリティコンテキストからユーザー情報を取得されますが、特定のシナリオのために、私はこの部分を渡す必要がありますHttpServletRequestオブジェクトから取得することができます。httpservletrequestからこれを取得するにはどうすればいいですか?

答えて

0

QueryParam o r PathParamはGETメソッド、FormParamはPOSTメソッドでリクエストパラメータをサーバーに送信します。

+0

あなたは私の質問を正しく受け取りませんでした。私は情報がパスパラメータとして渡されることを望んでいません。サーバー側では、httpservlet要求オブジェクトから情報を取得する必要があります。クエリパラメータまたはパスパラメータに追加すると、コンシューマサービスの署名が変更されます。私はそれを妨害するはずではないので、パラメータを渡して消費者側のhttpservlet要求オブジェクトを介してそれを読み取ろうとしています – Balaji

+0

次に、必要なパラメータをHttpHeaderに追加します – Alireza

関連する問題