HttpURLConnection重定向,获取及设置cookie

简介: HttpURLConnection获取重定向地址和cookie的代码如下:public void first() throws Exception{ Map paramsHashMap = new HashMap(); paramsHashMap.
HttpURLConnection获取重定向地址和cookie的代码如下:
public  void first() throws Exception{
		Map<String, String> paramsHashMap = new HashMap<String, String>();
		paramsHashMap.put("IF_NO", "IF0002");
		paramsHashMap.put("UID", "12345");
		firstRequest(API_HTTP, paramsHashMap, "UTF-8");
	}

   private  void firstRequest(String path, Map<String, String> params, String encoding) throws Exception{		
		StringBuilder sb = new StringBuilder();
		if(params!=null && !params.isEmpty()){
			for(Map.Entry<String, String> entry : params.entrySet()){
				sb.append(entry.getKey()).append('=');
				sb.append(URLEncoder.encode(entry.getValue(), encoding));
				sb.append('&');
			}
			sb.deleteCharAt(sb.length() - 1);
		}
		byte[] entity = sb.toString().getBytes();
		HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
		conn.setInstanceFollowRedirects(true);
		conn.setConnectTimeout(5000);
		conn.setRequestMethod("POST");
		conn.setDoOutput(true);
		conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
		conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
		OutputStream outStream = conn.getOutputStream();
		outStream.write(entity);
		//获取重定向地址
		redictURL= conn.getHeaderField( "Location" );

		System.out.println("第一次请求重定向地址 location="+redictURL);
		System.out.println("第一次请求 conn.getResponseCode()="+conn.getResponseCode());
		
		//获取cookie
		Map<String,List<String>> map=conn.getHeaderFields();
		Set<String> set=map.keySet();
		for (Iterator iterator = set.iterator(); iterator.hasNext();) {
			String key = (String) iterator.next();
			if (key.equals("Set-Cookie")) {
				System.out.println("key=" + key+",开始获取cookie");
				List<String> list = map.get(key);
				StringBuilder builder = new StringBuilder();
				for (String str : list) {
					builder.append(str).toString();
				}
				firstCookie=builder.toString();
				System.out.println("第一次得到的cookie="+firstCookie);
			}
		}
		
	}


HttpURLConnection在请求头中设置cookie的代码如下:

 

conn.setRequestMethod("POST");
conn.setRequestProperty("Cookie", firstCookie);

相关文章
|
2月前
|
安全 PHP
从建站到拿站 -- PHP(Cookie设置)
从建站到拿站 -- PHP(Cookie设置)
20 0
|
8月前
|
JavaScript
js设置、修改、获取、删除 cookie
js设置、修改、获取、删除 cookie
122 0
|
4月前
|
存储 JavaScript PHP
什么是cookie,如何设置在浏览器页面关闭后清除cookie
什么是cookie,如何设置在浏览器页面关闭后清除cookie
96 0
|
4月前
|
存储 JavaScript 前端开发
百度搜索:蓝易云【php设置和获取Cookie教程。】
需要注意的是,为了确保在向浏览器发送任何输出之前设置Cookie,应该在 `<html>`标签之前或PHP脚本的顶部设置Cookie。
74 0
|
10月前
|
存储 缓存 JSON
36.从入门到精通:CGI环境变量 GET和POST方法 GET方法 POST方法 CGI中使用Cookie Cookie设置 检索Cookie信息
36.从入门到精通:CGI环境变量 GET和POST方法 GET方法 POST方法 CGI中使用Cookie Cookie设置 检索Cookie信息
|
JSON 中间件 数据格式
解决scrapy设置cookie中间件时遇到的问题
解释COOKIES_ENABLED作用: * 当COOKIES_ENABLED是注释的时候scrapy默认没有开启cookie * 当COOKIES_ENABLED没有注释设置为False的时候scrapy默认使用了settings里面的cookie * 当COOKIES_ENABLED设置为True的时候scrapy就会把settings的cookie关掉,使用自定义cookie
294 1
|
8月前
|
Web App开发 安全 Unix
PHP - Laravel 设置 cookie
PHP - Laravel 设置 cookie
223 0
|
9月前
|
存储 PHP
php开发实战分析(2):cookie的动态使用(设置、获取、删除、猜你喜欢原理、购物车调用)
php开发实战分析(2):cookie的动态使用(设置、获取、删除、猜你喜欢原理、购物车调用)
135 0
|
9月前
|
JavaScript 前端开发
javascript通过设置Cookie来切换字体的解决方案
javascript通过设置Cookie来切换字体的解决方案
41 0
|
11月前
|
数据采集 Python
使用urllib设置代理和传递/保存cookie
使用urllib设置代理和传递/保存cookie