【问题标题】:HttpURLConnection - How to send Headers in setRequestPropertyHttpURLConnection - 如何在 setRequestProperty 中发送标头
【发布时间】:2016-01-23 21:45:21
【问题描述】:

我正在尝试使用 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");
    }
}

当我在带有标题的邮递员中调用上述 URL 时,它工作正常。但是当我在 Java 代码中运行 URL 时,SecurityContextHolder.getContext().getAuthentication() 总是返回 null

我做错了什么?

【问题讨论】:

标签: java httpurlconnection


【解决方案1】:

在创建 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()));

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 2019-01-30
    • 2022-01-19
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2010-10-03
    • 2020-02-03
    相关资源
    最近更新 更多