J'ai une classe existante que j'essaie de connecter pour obtenir des paramètres d'en-tête pour SSO un utilisateur dans notre système. La classe est la suivante.Passage de l'argument @Context à la méthode de la classe
import java.util.Map;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import org.springframework.stereotype.Component;
@Component
@Path("/http")
public class HttpResource {
@GET
@Path("/getHeaders")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, String> getAllHeaders(@Context HttpHeaders headers) {
Map<String, String> headerList = new HashMap<String, String>();
for (String key : headers.getRequestHeaders().keySet()) {
String value = headers.getRequestHeader(key).get(0);
System.out.println(key + " : " + value);
headerList.put(key, value);
}
return headerList;
}
}
Ce que je veux essayer de comprendre comment dois-je appeler getAllHeaders()
avec l'argument @Context
? J'ai trouvé une tonne d'exemples de la classe que j'ai, mais rien qui montre comment l'appeler.
J'ai aussi essayé de mettre l'annotation à l'intérieur de la classe plutôt que comme argument.
@Context
HttpHeaders httpHeaders;
mais quand je tente d'accéder httpHeaders.getAllHeaders()
retourne null. Je suppose parce que ce n'est pas créé parce que les documents javax disent qu'il ne retournera jamais null.
J'essaie d'appeler cela dans mon SSOAuthorizationFilter.java, mais j'ai aussi essayé d'y accéder via un contrôleur.
Quelle structure utilisez-vous? Printemps/RestEasy/Jersey? –
@ Shiraaz.M Spring –