我尝试使用Java代码在给定的URL中发送标题,如下所示:
URL u = new URL("http://domain:8081/App/mycall");
HttpURLConnection con= (HttpURLConnection) u.openConnection();
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("Auth-Token", authToken);
BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream()));然后,在我的应用程序中,我检查Auth-Token,如下所示:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
if (SecurityContextHolder.getContext().getAuthentication() != null) {
String reqToken = req.getHeader("Auth-Token");
}
}当我在post man中用头调用上面的URL时,它工作得很好。但是当我在Java代码中运行这个URL时,SecurityContextHolder.getContext().getAuthentication()总是返回null。
我做错了什么?
发布于 2016-01-23 20:09:39
在创建URL之前添加以下行解决了我的问题:
CookieHandler.setDefault(new CookieManager());在给定的URL中发送报头现在看起来像这样,并且它可以工作:
CookieHandler.setDefault(new CookieManager());
URL u = new URL("http://domain:8081/App/mycall");
HttpURLConnection con= (HttpURLConnection) u.openConnection();
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("Auth-Token", authToken);
BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream()));https://stackoverflow.com/questions/34900328
复制相似问题