【问题标题】:Cookies in Apache HTTP Client - JavaApache HTTP 客户端中的 Cookie - Java
【发布时间】:2017-08-11 01:39:44
【问题描述】:

我在使用 Java 的 Apache httpclient 时遇到了问题。我正在为一个网站编写一个登录机器人,它从登录表单中提取所有字段,填写用户名和密码,并通过发出 POST 请求登录到帐户。我使用 java 提供的类进行了尝试,但每次都返回登录页面。 它似乎适用于 Apache 客户端,但我尝试删除所有 cookie 处理代码以查看它是否仍然有效。我不再将 cookie 保存在列表中,也没有将 cookie 添加到请求中,但似乎我仍然可以正确登录。这个怎么可能?我不使用 cookiestore,也不知道 cookie 是从哪里来的,所以很明显它们必须保存在后台的某个地方。我需要清除它们以开始新会话。 我这样创建客户端

    CloseableHttpClient client = HttpClients.createDefault();

然后提出这样的要求

HttpPost post = new HttpPost(url+"/login");
HttpResponse response = client.execute(post);

【问题讨论】:

    标签: java apache cookies apache-httpclient-4.x


    【解决方案1】:

    我的英语很差。 cookie实际上来自CookieStore。但是cookie不是在execute(HttpUriRequest请求)中操作的。 如果你想添加或删除cookies。你可以使用execute(HttpUriRequest request, HttpContext context)。 例如:

    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.protocol.HttpClientContext;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    
    import java.io.IOException;
    
    /**
     * Created by y.wang on 11/16/16.
     */
    public class HttpClientTest {
        public static void main(String[] args){
            CloseableHttpClient client = HttpClients.createDefault();
            HttpClientContext httpClientContext = new HttpClientContext();
            String url = "";
            HttpPost post = new HttpPost(url + "/login");
            try {
                HttpResponse response = client.execute(post, httpClientContext);
            } catch (IOException e) {
                e.printStackTrace();
            }
            httpClientContext.getCookieStore().clear();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 2018-05-20
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多