HttpURLConnection与 CookieManager 实现Post提交请求和Cookie管理
最近在做一个网站的爬虫程序,使用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
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
copyright © 2008-2019 入门客AI创业平台 版权所有 备案号:湘ICP备2023012770号