httpClient 4.2 保持会话session

来源:互联网 发布:centos ssh服务器配置 编辑:程序博客网 时间:2024/05/16 04:51

最近写一个C/S模式的小程序,并在服务器端选用了HTTP协议(JAVA SERVLET)进行通信,在登录后发现后续操作无法正常完成。

Debug后发现是由于两会话Session不一致,而登录的后续操作需要使用Session中的数据。纠结良久,查询了很多资料之后终于发现解决方案,特在此记之~~

网络上提供的多数解决方案没有说明其适用版本,而用4.1.1的朋友应该会发现有一些方案中提到的方法已经不存在或者 变更了,而在4.1.1中的解决方法如下:

1. 在登录完成后记录下Cookie值:String cookie = httpResponse.getFirstHeader("set-Cookie").getValue()-->这里得到的便是一个String的cookie值, 把它保存下来。

2. 在每次后续操作执行前附加上cookie值: 

 DefaultHttpClient client = new DefaultHttpClient();

 HttpClientParams.setCookiePolicy(client.getParams(), CookiePolicy.BROWSER_COMPATIBILITY);

if (null != cookie)

      postMethod.setHeader("cookie", cookie);

大功造成!


PS: 不同版本的Apache HTTP包接口和调用方式可能不同,这种解法未必对其它版本有效~~

原创粉丝点击