牛骨文教育服务平台(让学习变的简单)
博文笔记

HttpURLConnection与 CookieManager 实现Post提交请求和Cookie管理

创建时间:2014-04-10 投稿人: 浏览次数:182



最近在做一个网站的爬虫程序,使用HTTPURLConnection 打开连接,提交 post请求,但是,返回的 HTTP 代码总是 302。

设置重定向:

HttpURLConnection.setFollowRedirects(true);

返回了:

HttpURLConnection.HTTP_OK

但是,下载的网页源代码提示:页面超时,网页被重定向到主页了。

在网上找了找,发现 HttpURLConnection不能维护 Cookie.

好,那我就自己维护 Cookie。

网上有这么两种方法:

1. 通过 获取 头信息的方式获取 cookie ,然后再将获取的 cookie 写入下一个请求。代码如下:

	HttpURLConnection.setFollowRedirects(true);
	hc = (HttpURLConnection) url.openConnection();
	hc.setRequestMethod("POST");
	hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36");
	hc.setDoOutput(true);
	hc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
	hc.setRequestProperty("Content-Language", "zh-cn");
	hc.setRequestProperty("Connection", "keep-alive");
	hc.setRequestProperty("Cache-Control", "no-cache");
	if (code == HttpURLConnection.HTTP_OK) {
		String cookieskey = "Set-Cookie";
		Map<String, List<String>> maps = hc.getHeaderFields();
		List<String> coolist = maps.get(cookieskey);
		Iterator<String> it = coolist.iterator();
		StringBuffer sbu = new StringBuffer();
		sbu.append("eos_style_cookie=default; ");
		while(it.hasNext()){
			sbu.append(it.next());
		}
		System.out.println(sbu.toString());
		return sbu.toString();
	}//if


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。