如何在 Apache HttpClient 4.1 中处理会话

2022-09-01 02:01:09

我正在使用 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);

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


答案 1

正确的方法是准备一个 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);
// ...

答案 2

推荐