2016-07-12 10 views
0

senden Ich benutze die folgende Rest-Client-Implementierung von Trikot, um einen Rest-Service zu konsumieren.Ich bin in der Lage, es erfolgreich zu tun.Zusätzlich jetzt muss ich Anfrage Parameter senden, die als Teil verbraucht werden HttpServletRequest auf der Herstellerseite.Wie HTTP-Anfrage-Parameter mit Hilfe von Jersey-Client

Verbraucherseite Jersey Client-Code

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; 
} 

Producer Seite

@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; 
} 

Das Hauptziel hier derzeit ich Zusammenhang Benutzerinformationen von WebLogic Sicherheit, sondern für ein bestimmtes Szenario muss ich diesen Teil passieren von Rest-Service-Anfrage und erhalten Sie es von HttpServletRequest-Objekt. Wie kann ich dies erhalten von httpservletrequest

Antwort

0

Sie können QueryParam o. verwenden r PathParam in GET-Methode und FormParam in der POST-Methode zum Senden von Anforderungsparametern an den Server.

+0

Sie haben meine Frage nicht richtig beantwortet. Ich möchte nicht, dass Informationen als Pfadparameter übergeben werden. Auf dem Serverende möchte ich Informationen vom httpservlet-Anforderungsobjekt erhalten. Wenn ich es im Abfrageparameter oder im Pfadparameter hinzufüge, würde sich meine Signatur des Verbraucherdienstes ändern. Ich soll es nicht stören und daher versuche ich, einen Parameter zu übergeben und es durch httpservlet Anfrageobjekt auf der Verbraucherseite zu lesen – Balaji

+0

Dann fügen Sie den erforderlichen Parameter zu HttpHeader hinzu – Alireza