2016-08-15 6 views
0

Ich frage mich, ob es so hart ist, wie ich es derzeit versuche, es zu erreichen. Ich benutze einige Interceptor für die Sicherheit in meiner Anwendung von RESTEasy. Der Abfangjäger implementiert javax.ws.rs.container.ContainerRequestFilter.RestEasy Interceptor

Ich benutze einen solchen Code Anforderungsdaten zuzugreifen:

if (((PostMatchContainerRequestContext) requestContext).getHttpRequest().getHttpMethod().equals("GET")) { 
    requestedId = Long.parseLong(requestContext.getUriInfo().getQueryParameters().get("id").get(0)); 
} else { 
    postDataMap = getPostData(requestContext); 
} 

und

private LinkedHashMap getPostData(ContainerRequestContext requestContext) { 
    Object obj = null; 

    try { 
     String result = IOUtils.toString(requestContext.getEntityStream()); 
     ObjectMapper mapper = new ObjectMapper(); 
     obj = mapper.readValue(result, Object.class); 
     System.out.println(obj); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return (LinkedHashMap) obj; 
} 

Aber es lächerlich Nähte auf Anfrage Daten in einer solchen Art und Weise zuzugreifen. Jetzt wollte ich auf DELETE-Request Daten zugreifen, konnte aber keine Lösung finden. Gibt es einen richtigen Weg, um das zu erreichen, was ich gerade mache?

Antwort

0

Mit dem Abfangen meinen Sie, Daten zu überprüfen, bevor es in die Ruheebene geht? Ich habe dies mit der Implementierung der Filterschnittstelle (https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/Filter.html) erreicht.

Ich hoffe, es hilft. Br, Dusan

+0

ja, ich meine, was Sie erwähnt haben. Ich werde deine Lösung versuchen und dir ein Feedback geben. –

+0

Wirklich nützliches Beispiel kann http://www.journaldev.com/1933/java-servlet-filter-example-tutorial gefunden werden – dkmb

0

können Sie Sicherheitsinfo in Header gesetzt, erhalten Wert wie folgt aus:

String logintoken = crc.getHeaderString("token");