Tôi có một lớp hiện có mà tôi đang cố gắng đưa vào để lấy một số thông số tiêu đề cho người dùng SSO vào hệ thống của chúng tôi. Lớp học như sau.Truyền đối số @Context sang phương thức trong lớp
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;
}
}
Những gì tôi đang cố gắng tìm ra là làm thế nào để tôi gọi getAllHeaders()
với lập luận @Context
? Tôi đã tìm thấy một loạt các ví dụ của lớp tôi có, nhưng không có gì cho thấy làm thế nào để gọi nó.
Tôi cũng đã thử đặt chú thích bên trong lớp thay vì làm đối số.
@Context
HttpHeaders httpHeaders;
nhưng khi tôi cố gắng truy cập httpHeaders.getAllHeaders()
nó trả về giá trị rỗng. Tôi giả sử bởi vì nó không thực sự được tạo ra bởi vì các tài liệu javax nói nó sẽ không bao giờ trả về null.
Tôi đang cố gắng gọi điều này trong SSOAuthorizationFilter.java của mình, nhưng cũng đã thử truy cập nó qua bộ điều khiển.
Bạn đang sử dụng khung làm việc nào? Spring/RestEasy/Jersey? –
@ Shiraaz.M Spring –