关于HttpClient的一个小问题

时间:2022-02-05 17:35:14
现在Apache 的Httpclient会自动保存一些什么cookie啊,session之类的信息,比如某个网站你之前已经登陆过了,只要你用同一个HTTPclient去请求,永远会显示你是已登陆状态。
那如果我程序退出了,再重新启动的话,是不是之前用的HTTPclient就不能用了?也就是说用这个HTTPclient再去请求该网站的话是不是就显示未登陆状态?
那程序退出的时候应该怎么做呢?能直接保存HTTPclient吗?还是要把里面的cookie保存起来?

8 个解决方案

#1


Apache 的Httpclient会自动保存一些什么cookie,如果cookie是保存在本地的话,你下次登录,HTTPclient会去检查是否有cookie存在,有的话就直接登录了。

#2


引用 1 楼 magi1201 的回复:
Apache 的Httpclient会自动保存一些什么cookie,如果cookie是保存在本地的话,你下次登录,HTTPclient会去检查是否有cookie存在,有的话就直接登录了。

怎么样保存cookie到本地使得HTTPclient能够自动检查是不是存在cookie呢?
关于HttpClient的一个小问题

#3


据说Httpclient4以上会自动保存cookie 
你刚才那个程序 你用Httpclient3.0的包去试试看能不能得到结果

#4


程序退出了, 就比较麻烦一些, Httpclient4 里面有个CookieStore的接口,  主要是你保存cookie的时候要判断是有MaxAge的, 不是那种浏览器一关就没有的cookie, 而且你读取持久化的cookie假设从文件中, 还要判断下cookie是否是对应的domain , path, 是否超时, 是有点麻烦的事情。

3.5. Cookie persistence
HttpClient can work with any physical representation of a persistent cookie store that implements
the CookieStore interface. The default CookieStore implementation called BasicCookieStore is aHTTP state management
27
simple implementation backed by a java.util.ArrayList. Cookies stored in an BasicClientCookie
object are lost when the container object get garbage collected. Users can provide more complex
implementations if necessary.
// Create a local instance of cookie store
CookieStore cookieStore = new BasicCookieStore();
// Populate cookies if needed
BasicClientCookie cookie = new BasicClientCookie("name", "value");
cookie.setVersion(0);
cookie.setDomain(".mycompany.com");
cookie.setPath("/");
cookieStore.addCookie(cookie);
// Set the store
CloseableHttpClient httpclient = HttpClients.custom()
        .setDefaultCookieStore(cookieStore)
        .build();

#5


引用 3 楼 cbxjj 的回复:
据说Httpclient4以上会自动保存cookie 
你刚才那个程序 你用Httpclient3.0的包去试试看能不能得到结果

这个自动保存我知道,我的意思是如果我的程序退出了。
那程序重新运行的话,再去请求以前网页的话,是不是显示未登录的状态?

#6


引用 4 楼 zealVampire 的回复:
程序退出了, 就比较麻烦一些, Httpclient4 里面有个CookieStore的接口,  主要是你保存cookie的时候要判断是有MaxAge的, 不是那种浏览器一关就没有的cookie, 而且你读取持久化的cookie假设从文件中, 还要判断下cookie是否是对应的domain , path, 是否超时, 是有点麻烦的事情。

3.5. Cookie persistence
HttpClient can work with any physical representation of a persistent cookie store that implements
the CookieStore interface. The default CookieStore implementation called BasicCookieStore is aHTTP state management
27
simple implementation backed by a java.util.ArrayList. Cookies stored in an BasicClientCookie
object are lost when the container object get garbage collected. Users can provide more complex
implementations if necessary.
// Create a local instance of cookie store
CookieStore cookieStore = new BasicCookieStore();
// Populate cookies if needed
BasicClientCookie cookie = new BasicClientCookie("name", "value");
cookie.setVersion(0);
cookie.setDomain(".mycompany.com");
cookie.setPath("/");
cookieStore.addCookie(cookie);
// Set the store
CloseableHttpClient httpclient = HttpClients.custom()
        .setDefaultCookieStore(cookieStore)
        .build();


我现在已经登陆了之后,httpclient里维护了cookie之类的信息。
那么我怎么从HTTPclient中取出cookie?
然后我保存起来,下次程序启动的时候,从文件里读取出来,然后怎么设置HTTPclient用已经存在的这个cookie呢?谢谢

#7


引用 2 楼 guangkuo35 的回复:
Quote: 引用 1 楼 magi1201 的回复:

Apache 的Httpclient会自动保存一些什么cookie,如果cookie是保存在本地的话,你下次登录,HTTPclient会去检查是否有cookie存在,有的话就直接登录了。

怎么样保存cookie到本地使得HTTPclient能够自动检查是不是存在cookie呢?
关于HttpClient的一个小问题

java web里面是这样的,不知道HTTPclient有没有对应的方法  关于HttpClient的一个小问题

#8


引用 3 楼 cbxjj 的回复:
据说Httpclient4以上会自动保存cookie 
你刚才那个程序 你用Httpclient3.0的包去试试看能不能得到结果

我现在已经登陆了之后,httpclient里维护了cookie之类的信息。
那么我怎么从HTTPclient中取出cookie?
然后我保存起来,下次程序启动的时候,从文件里读取出来,然后怎么设置HTTPclient用已经存在的这个cookie呢?谢谢

#1


Apache 的Httpclient会自动保存一些什么cookie,如果cookie是保存在本地的话,你下次登录,HTTPclient会去检查是否有cookie存在,有的话就直接登录了。

#2


引用 1 楼 magi1201 的回复:
Apache 的Httpclient会自动保存一些什么cookie,如果cookie是保存在本地的话,你下次登录,HTTPclient会去检查是否有cookie存在,有的话就直接登录了。

怎么样保存cookie到本地使得HTTPclient能够自动检查是不是存在cookie呢?
关于HttpClient的一个小问题

#3


据说Httpclient4以上会自动保存cookie 
你刚才那个程序 你用Httpclient3.0的包去试试看能不能得到结果

#4


程序退出了, 就比较麻烦一些, Httpclient4 里面有个CookieStore的接口,  主要是你保存cookie的时候要判断是有MaxAge的, 不是那种浏览器一关就没有的cookie, 而且你读取持久化的cookie假设从文件中, 还要判断下cookie是否是对应的domain , path, 是否超时, 是有点麻烦的事情。

3.5. Cookie persistence
HttpClient can work with any physical representation of a persistent cookie store that implements
the CookieStore interface. The default CookieStore implementation called BasicCookieStore is aHTTP state management
27
simple implementation backed by a java.util.ArrayList. Cookies stored in an BasicClientCookie
object are lost when the container object get garbage collected. Users can provide more complex
implementations if necessary.
// Create a local instance of cookie store
CookieStore cookieStore = new BasicCookieStore();
// Populate cookies if needed
BasicClientCookie cookie = new BasicClientCookie("name", "value");
cookie.setVersion(0);
cookie.setDomain(".mycompany.com");
cookie.setPath("/");
cookieStore.addCookie(cookie);
// Set the store
CloseableHttpClient httpclient = HttpClients.custom()
        .setDefaultCookieStore(cookieStore)
        .build();

#5


引用 3 楼 cbxjj 的回复:
据说Httpclient4以上会自动保存cookie 
你刚才那个程序 你用Httpclient3.0的包去试试看能不能得到结果

这个自动保存我知道,我的意思是如果我的程序退出了。
那程序重新运行的话,再去请求以前网页的话,是不是显示未登录的状态?

#6


引用 4 楼 zealVampire 的回复:
程序退出了, 就比较麻烦一些, Httpclient4 里面有个CookieStore的接口,  主要是你保存cookie的时候要判断是有MaxAge的, 不是那种浏览器一关就没有的cookie, 而且你读取持久化的cookie假设从文件中, 还要判断下cookie是否是对应的domain , path, 是否超时, 是有点麻烦的事情。

3.5. Cookie persistence
HttpClient can work with any physical representation of a persistent cookie store that implements
the CookieStore interface. The default CookieStore implementation called BasicCookieStore is aHTTP state management
27
simple implementation backed by a java.util.ArrayList. Cookies stored in an BasicClientCookie
object are lost when the container object get garbage collected. Users can provide more complex
implementations if necessary.
// Create a local instance of cookie store
CookieStore cookieStore = new BasicCookieStore();
// Populate cookies if needed
BasicClientCookie cookie = new BasicClientCookie("name", "value");
cookie.setVersion(0);
cookie.setDomain(".mycompany.com");
cookie.setPath("/");
cookieStore.addCookie(cookie);
// Set the store
CloseableHttpClient httpclient = HttpClients.custom()
        .setDefaultCookieStore(cookieStore)
        .build();


我现在已经登陆了之后,httpclient里维护了cookie之类的信息。
那么我怎么从HTTPclient中取出cookie?
然后我保存起来,下次程序启动的时候,从文件里读取出来,然后怎么设置HTTPclient用已经存在的这个cookie呢?谢谢

#7


引用 2 楼 guangkuo35 的回复:
Quote: 引用 1 楼 magi1201 的回复:

Apache 的Httpclient会自动保存一些什么cookie,如果cookie是保存在本地的话,你下次登录,HTTPclient会去检查是否有cookie存在,有的话就直接登录了。

怎么样保存cookie到本地使得HTTPclient能够自动检查是不是存在cookie呢?
关于HttpClient的一个小问题

java web里面是这样的,不知道HTTPclient有没有对应的方法  关于HttpClient的一个小问题

#8


引用 3 楼 cbxjj 的回复:
据说Httpclient4以上会自动保存cookie 
你刚才那个程序 你用Httpclient3.0的包去试试看能不能得到结果

我现在已经登陆了之后,httpclient里维护了cookie之类的信息。
那么我怎么从HTTPclient中取出cookie?
然后我保存起来,下次程序启动的时候,从文件里读取出来,然后怎么设置HTTPclient用已经存在的这个cookie呢?谢谢