您的位置:首页 > 其它

获取需要登录的网页信息,session保持方法

2013-04-11 14:38 162 查看
例如,登录网站后才能查看的内容,使用HttpURLConnection获取网页内容,登录是1.jsp,获取信息是x.jsp。

网上能搜到不少资料,一直没有成功,终于找到了原因:登录时,验证成功后,后台会自动转向到默认显示的页面。

我们在使用IE时是没问题的:

程序自动调用的是1.jsp,但是,1.jsp 登录 -- 成功转向--2.jsp,在1向2的转发过程中由于没有保持session,所以我们最后拿到的是2.jsp的sessionID!而2.jsp的内容是“您的登录信息已失效,请重新登录”。 这样实际上使用2.jsp的sessionID获取x.jsp的内容,当然是不行的。

所以在登录的过程中要增加:HttpURLConnection.setFollowRedirects(false);用以禁止程序跟随自动跳转。程序片段如下:

public String getLoginSessionId(String surl,String un,String pwd) throws IOException{
String sid = "";
HttpURLConnection uc = null;
InputStream is = null;
try{
URL url = new URL(surl);
HttpURLConnection.setFollowRedirectes(false);
uc = (HttpURLConnection)url.openConnection();
//这里为了简化,直接使用串接url的方式提交用户名密码,即没有使用用户、密码这两个参数
is = uc.getInputStream();
sid = uc.getHeaderField("Set-Cookie");
sid = sid.split(";")[0];//此处简化处理
return sid;
}catch(Exception e){
return null;
}finally{
try{if(is !=null) is.close();}catch(Exception e){}
}
}
public String getHtml(String url,String sid){
//...省略
}
public static void main(String[] args){
...
String sid = x.getSessionId("http://www.xx.com/login.jsp?username=x&password=xxxx","","");
String html = x.getHtml(url,sid);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: