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

例如,登录网站后才能查看的内容,使用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);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值