Java 无法创建并设置cookie以处理JSessionId

Java 无法创建并设置cookie以处理JSessionId,java,apache-httpclient-4.x,apache-commons-httpclient,Java,Apache Httpclient 4.x,Apache Commons Httpclient,我们有一个基于Java的应用程序,可以从网站下载文件 必须登录才能访问网站内容(并下载) 所有这些都是使用ApacheHttpClient 4.3.3作为Java应用程序的一部分完成的 不幸的是,代码一直在实现登录,并在web服务器上创建不需要的会话(~10000+) 网站一旦登录,就会提供一个JSessionID作为cookie的一部分 我想到的是从cookie中获取这个JSESSIONID,创建cookie并将其设置为下一次调用的一部分 下面是我所做的 在第一次执行url之后,我从cook

我们有一个基于Java的应用程序,可以从网站下载文件

必须登录才能访问网站内容(并下载)

所有这些都是使用ApacheHttpClient 4.3.3作为Java应用程序的一部分完成的

不幸的是,代码一直在实现登录,并在web服务器上创建不需要的会话(~10000+)

网站一旦登录,就会提供一个JSessionID作为cookie的一部分

我想到的是从cookie中获取这个JSESSIONID,创建cookie并将其设置为下一次调用的一部分

下面是我所做的

  • 在第一次执行url之后,我从cookie中读取JSESSIONID并将其存储在文本文件中
  • 在第二次运行期间,我读取文本文件并获取JSESSIONID的值,创建一个cookie并设置它
  • 调用执行
    ClosableHTTPClient
    I将上下文与cookie一起传递
下面是我的代码片段

CloseableHttpClient httpClient = null;
httpClient = HttpClientBuilder.create().useSystemProperties().build();
HttpClientContext  localContext = HttpClientContext.create();
BasicCookieStore cookieStore = new BasicCookieStore();
cookie.setDomain("sso.comp.com");
cookie.setPath("/");            
cookie.setAttribute("JSESSIONID", "dfafdffddasfad32423423_!ad");
cookieStore.addCookie(cookie);
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
localContext.setCookieStore(cookieStore);
CloseableHttpResponse response = null;
response = httpClient.execute(get,localContext);
这总是导致HTTP 401未经授权

请注意,从开始到下载,每次都会调用我的应用程序,但只需几秒钟/分钟


如果您以错误的方式创建cookie,将不胜感激。方法
setAttribute
用于设置


要验证cookie是否以写入格式发送,您可以启用或嗅探HTTP流量…

将cookie本身作为内存中的对象存储在某处,然后再次使用它如何?问题是应用程序在60分钟内多次关闭并重新启动。在我看来,Cookie序列化/反序列化的方式出现了问题。因此,我想检查是否有任何选项可以使用除写入文件之外的任何其他选项。
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "dfafdffddasfad32423423_!ad");
cookie.setDomain("sso.comp.com");
cookie.setPath("/");
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "true");
cookieStore.addCookie(cookie);