如何使用Jersey客户端发送http请求参数

时间:2016-07-12 08:53:58

标签: http jersey

我使用以下休息客户端实现jersey来使用休息服务。我能够成功完成。另外现在我需要发送请求参数,这些参数将在生产者端作为HttpServletRequest的一部分使用。

消费者侧泽西岛客户代码

    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获取此信息

1 个答案:

答案 0 :(得分:0)

您可以在GET方法中使用QueryParam或PathParam,在POST方法中使用FormParam将请求参数发送到服务器。