初步了解了一下HttpClient,需求是对一个系统进行登陆,然后下载指定URL的内容 PostMethod post = new PostMethod( "xxxxx/checkLogin.aspx" );
但对第二个地址进行连接的时候
post = new PostMethod( "xxxxx/downLoad.aspx?file=xxx" ); 这样会话就丢失了,不知道这个怎么弄了,因为比较急,没有时间多研究。所以请高手指教了。
网上说把cookie再发回去,试了。不管用
但对第二个地址进行连接的时候
post = new PostMethod( "xxxxx/downLoad.aspx?file=xxx" ); 这样会话就丢失了,不知道这个怎么弄了,因为比较急,没有时间多研究。所以请高手指教了。
网上说把cookie再发回去,试了。不管用
加上这个sessionId;
SessionId的获得 HttpContext localContext = new BasicHttpContext();
--放入post对象和context对象获得response
HttpResponse _response2 = httpclient.execute(post, localContext);
CookieStore store2 = httpclient.getCookieStore();
List list2 = store2.getCookies();
String sessionId = "";
for (int i = 0; i < list2.size(); i++) {
Cookie cookie = (Cookie) list2.get(i);
String cookieName = cookie.getName();
if (cookieName.equals("JSESSIONID")) {
sessionId = cookie.getValue();
break;
}
}
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", getSessionId());
//cookie.setDomain("your domain");cookie.setPath("/");cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
response = client.execute(httppost);
比如cookie的域等是否与请求地址匹配,网站维持会话的方式是否非session cookie,用referer之类的
访问第二个地址的时候,现在是new了一下,
一个HttpClient对象,就可以理解为浏览器的一个进程。如果是同一个进程后续的请求,Cookie应该会自动发过去的。如果你重新又创建了一个新的HttpClient这时就相当于开了2个浏览器进程。2个进程是不相关的。