如何在HttpClient 4.1中处理会话

spe*_*0ne 38 java cookies session httpclient

我正在使用HttpClient 4.1.1来测试我的服务器的REST API.

我可以设法登录似乎工作正常,但当我尝试做任何其他事情我失败了.

我很可能在下一个请求中设置cookie时遇到问题.

这是我目前的代码:

HttpGet httpGet = new HttpGet(<my server login URL>);
httpResponse = httpClient.execute(httpGet)
sessionID = httpResponse.getFirstHeader("Set-Cookie").getValue();
httpGet.addHeader("Cookie", sessionID);
httpClient.execute(httpGet);
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来管理HttpClient包中的会话/ cookie设置?

Bal*_*usC 70

正确的方法是准备一个CookieStore你需要HttpContext在每次HttpClient#execute()通话时设置的通道.

HttpClient httpClient = new DefaultHttpClient();
CookieStore cookieStore = new BasicCookieStore();
HttpContext httpContext = new BasicHttpContext();
httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
// ...

HttpResponse response1 = httpClient.execute(method1, httpContext);
// ...

HttpResponse response2 = httpClient.execute(method2, httpContext);
// ...
Run Code Online (Sandbox Code Playgroud)

  • 如果会话到期会发生什么? (16认同)