【问题标题】:Exit from HttpClient session退出 HttpClient 会话
【发布时间】:2013-05-13 15:20:48
【问题描述】:

如何退出 HttpClient 会话?

我使用以下代码使用 Apache HttpClient 登录到应用程序

public HttpClient loginToHexgen(String username, String password) {
        HttpClient client = new DefaultHttpClient();

        // send post url to login to  hexgen
        HttpPost post = new HttpPost("http://localhost:8080/j_spring_security_check");

        try {
            // set the user name and password
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("j_username", username));
            nameValuePairs.add(new BasicNameValuePair("j_password", password));

            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = client.execute(post);

            HttpEntity entity = response.getEntity();

            if (entity != null) {
                post.abort();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return client;
    }

如下:

HttpClient client = new DefaultHttpClient();
client= httpRequest.loginToHexgen("mayank", "hexgen");

这里httpRequest是使用loginToHexgen方法的类。

如果我想以不同的用户名和密码登录多个用户的系统,该怎么做?

例如在同一个会话中,我想注销一个用户并使用其他用户登录。

【问题讨论】:

    标签: java apache-httpclient-4.x


    【解决方案1】:

    您可以使用一种变通方法——使用新的 cookieStore 向新用户发送请求。

    // Create a local instance of cookie store
    cookieStore = new BasicCookieStore();
    // Set the store
    httpClient.setCookieStore(cookieStore);
    

    服务器将为您的新用户打开一个新会话。请注意,旧会话不会关闭。 我不建议使用这种方式。

    会话管理是在服务器端执行的——你不能在客户端进行。 我建议您在测试结束时调用一个服务器 URL,该 URL 将使服务器端的会话无效。 (一般使用Form认证的应用程序都有注销功能,你只需要使用它)

    【讨论】:

    • +1 作为答案,我尝试使用不同的密码发送不同的用户,但令我惊讶的是,它没有造成任何问题,并且按我缩进的方式工作。感谢您的努力。
    • loginToHexgen 函数中有以下代码的问题:HttpClient client = new DefaultHttpClient();。相当于为新用户创建cookieStore。注意: 1. 如果您想代表经过身份验证的用户访问 URL,您需要使用相同的 HttpClient 实例(否则请求将没有 cookie)。 2.您可以检查您的服务器,您会看到每次登录都会创建一个新会话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2022-01-07
    相关资源
    最近更新 更多