gpt4 book ai didi

java - Apache HttpClient session 不起作用

转载 作者:行者123 更新时间:2023-12-03 18:25:09 35 4
gpt4 key购买 nike

我正在尝试通过以下方式代表具有 HttpClient 4.3.3 的用户登录 Web 应用程序:

CloseableHttpClient client = HttpClients.createDefault();
CookieStore cookies = new BasicCookieStore();
HttpPost httpPost = new HttpPost(LOGIN_URL);

List <NameValuePair> paramList = new ArrayList <NameValuePair>();
paramList.add(new BasicNameValuePair("userid", username));
paramList.add(new BasicNameValuePair("pword", password));

httpPost.setEntity(new UrlEncodedFormEntity(paramList));
HttpContext httpContext = new BasicHttpContext();
httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookies);
CloseableHttpResponse response = client.execute(httpPost, httpContext);

……没关系。我返回的结果是 Web 应用程序菜单的 HTML,所以我成功登录了。 HTML 中有很多链接,所以我使用正则表达式并将其中一个拉出。然后我这样做:
HttpGet httpGet = new HttpGet(URL_I_PULLED_FROM_HTML);
httpContext = new BasicHttpContext();
httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookies);
response = client.execute(httpGet);
client.close();

现在而不是从 response 获取预期的 HTML ,我只是获得了“用户未登录”页面的 HTML。就像 cookie 不起作用一样。在发出后续 GET 请求之前,我尝试重新初始化 http 客户端,但没有任何区别。有什么我在这里想念的吗?

此外,在第一个请求(登录 POST)之后, CookieStore对象有 cookie,如图所示:
for (Cookie cookie : cookies.getCookies()) {
LOG.info(cookie.getName());
LOG.info(cookie.getValue());
}

它显示了 3 个 cookie。它们的名称是 JSESSIONID、TS7181ec 和 TSd9290f(所有 3 个都有值)。

最佳答案

对不起,我的菜鸟错误。难怪它不起作用,我问题中的第二个请求(登录后的 GET)实际上并未传入包含 cookie 的 httpContext 对象。

关于java - Apache HttpClient session 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23251941/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com