Java HttpClient 4,HTTP身份验证失败或会话持久性问题

Java HttpClient 4,HTTP身份验证失败或会话持久性问题,java,authentication,cookies,httpclient,Java,Authentication,Cookies,Httpclient,似乎我已成功地使用HttpClient登录,但任何下一个HTTP请求都会将我返回到登录页面 我的代码如下: DefaultHttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); CookieStore cookieStore = new BasicCo

似乎我已成功地使用HttpClient登录,但任何下一个HTTP请求都会将我返回到登录页面

我的代码如下:

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); 

CookieStore cookieStore = new BasicCookieStore(); 
HttpContext client_context = new BasicHttpContext(); 
client_context.setAttribute(ClientContext.COOKIE_STORE, cookieStore); 

httpclient.setRedirectStrategy(new DefaultRedirectStrategy() { 
    // this is necessary to automatically redirect if new URL is defined in the responce body
    @Override 
    public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) 
    { 
        boolean isRedirect = false; 
        try 
        { 
            isRedirect = super.isRedirected(request, response, context); 
        } 
        catch (ProtocolException e) 
        { 
            // TODO Auto-generated catch block  
            e.printStackTrace(); 
        } 
        if (!isRedirect) 
        { 
            int responseCode = response.getStatusLine().getStatusCode(); 
            if (responseCode == 301 || responseCode == 302) 
            { 
                return true; 
            } 
        } 
        return isRedirect; 
    } 
}); 

HttpPost login = new HttpPost("http://localhost:8080/web/j_spring_security_check"); 
HttpParams param = new BasicHttpParams(); 
param.setParameter("j_username", "me"); 
param.setParameter("j_password", "p"); 
login.setParams(param); 

HttpResponse response = httpclient.execute(targetHost, login, client_context);
...
... 
并生成下一个日志:

1  [org.apache.http.impl.conn.DefaultClientConnection] Sending request: POST /web/j_spring_security_check HTTP/1.1 
2  [org.apache.http.headers] >> POST /web/j_spring_security_check HTTP/1.1 
3  [org.apache.http.headers] >> Content-Length: 0 
4  [org.apache.http.headers] >> Host: localhost:8080 
5  [org.apache.http.headers] >> Connection: Keep-Alive 
6  [org.apache.http.headers] >> User-Agent: Apache-HttpClient/4.1.2 (java 1.5) 
7  [org.apache.http.impl.conn.DefaultClientConnection] Receiving response: HTTP/1.1 302 Moved Temporarily 
8  [org.apache.http.headers] << HTTP/1.1 302 Moved Temporarily 
9  [org.apache.http.headers] << Server: Apache-Coyote/1.1 
10 [org.apache.http.headers] << Set-Cookie: JSESSIONID=7FDB4CC310A8784A3DE7B5D9370D124D; Path=/web 
11 [org.apache.http.headers] << Location: http://localhost:8080/web/application.html;jsessionid=7FDB4CC310A8784A3DE7B5D9370D124D 
12 [org.apache.http.headers] << Content-Length: 0 
13 [org.apache.http.headers] << Date: Thu, 01 Sep 2011 17:35:49 GMT 
14 [org.apache.http.client.protocol.ResponseProcessCookies] Cookie accepted: "[version: 0][name: JSESSIONID][value: 7FDB4CC310A8784A3DE7B5D9370D124D][domain: localhost][path: /web][expiry: null]".  
15 [org.apache.http.impl.client.DefaultHttpClient] Connection can be kept alive indefinitely 
16 [temp.LoginTest$1] Redirect requested to location 'http://localhost:8080/web/application.html;jsessionid=7FDB4CC310A8784A3DE7B5D9370D124D' 
17 [org.apache.http.impl.client.DefaultHttpClient] Redirecting to 'http://localhost:8080/web/application.html;jsessionid=7FDB4CC310A8784A3DE7B5D9370D124D' via HttpRoute[{}->http://localhost:8080] 
18 [org.apache.http.client.protocol.RequestAddCookies] CookieSpec selected: compatibility 
19 [org.apache.http.client.protocol.RequestAddCookies] Cookie [version: 0][name: JSESSIONID][value: 7FDB4CC310A8784A3DE7B5D9370D124D][domain: localhost][path: /web][expiry: null] match [localhost:8080/web/application.html;jsessionid=7FDB4CC310A8784A3DE7B5D9370D124D] 
20 [org.apache.http.client.protocol.RequestAuthCache] Auth cache not set in the context 
21 [org.apache.http.impl.client.DefaultHttpClient] Attempt 2 to execute request 
22 [org.apache.http.impl.conn.DefaultClientConnection] Sending request: GET /web/application.html;jsessionid=7FDB4CC310A8784A3DE7B5D9370D124D HTTP/1.1 
23 [org.apache.http.headers] >> GET /web/application.html;jsessionid=7FDB4CC310A8784A3DE7B5D9370D124D HTTP/1.1 
24 [org.apache.http.headers] >> Host: localhost:8080 
25 [org.apache.http.headers] >> Connection: Keep-Alive 
26 [org.apache.http.headers] >> User-Agent: Apache-HttpClient/4.1.2 (java 1.5) 
27 [org.apache.http.headers] >> Cookie: JSESSIONID=7FDB4CC310A8784A3DE7B5D9370D124D 
28 [org.apache.http.impl.conn.DefaultClientConnection] Receiving response: HTTP/1.1 302 Moved Temporarily 
29 [org.apache.http.headers] << HTTP/1.1 302 Moved Temporarily 
30 [org.apache.http.headers] << Server: Apache-Coyote/1.1 
31 [org.apache.http.headers] << Location: http://localhost:8080/web/login.html 
32 [org.apache.http.headers] << Content-Length: 0 
33 [org.apache.http.headers] << Date: Thu, 01 Sep 2011 17:35:49 GMT 
34 [org.apache.http.impl.client.DefaultHttpClient] Connection can be kept alive indefinitely 
1[org.apache.http.impl.conn.DefaultClientConnection]发送请求:POST/web/j_spring\u security\u check http/1.1
2[org.apache.http.headers]>>POST/web/j_spring\u security\u check http/1.1
3[org.apache.http.headers]>>内容长度:0
4[org.apache.http.headers]>>主机:localhost:8080
5[org.apache.http.headers]>>连接:保持活动状态
6[org.apache.http.headers]>>用户代理:ApacheHttpClient/4.1.2(Java1.5)
7[org.apache.http.impl.conn.DefaultClientConnection]接收响应:http/1.1 302临时移动
8[org.apache.http.headers]>连接:保持活动状态
26[org.apache.http.headers]>>用户代理:ApacheHttpClient/4.1.2(Java1.5)
27[org.apache.http.headers]>>Cookie:JSESSIONID=7FDB4CC310A8784A3DE7B5D9370D124D
28[org.apache.http.impl.conn.DefaultClientConnection]接收响应:http/1.1 302临时移动
29[org.apache.http.headers]