簡體   English   中英

HttpURLConnection-如何在setRequestProperty中發送標題

[英]HttpURLConnection - How to send Headers in setRequestProperty

我正在嘗試使用如下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

我究竟做錯了什么?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM