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);

相关文章
|
安全 PHP
从建站到拿站 -- PHP(Cookie设置)
从建站到拿站 -- PHP(Cookie设置)
194 0
|
存储
【Azure APIM】APIM 策略语句如何来设置多个Cookie值让浏览器保存
【Azure APIM】APIM 策略语句如何来设置多个Cookie值让浏览器保存
313 1
|
JavaScript API
蓝易云 - 如何使用CORS来允许设置Cookie
以上就是使用CORS来允许设置Cookie的方法。
329 2
|
Java 应用服务中间件 nginx
【Azure 环境】Azure应用程序网关设置set_Cookie=key=value; SameSite=Strict; HTTPOnly,AzureAD登录使用cookie时使用不了的案例记录
【Azure 环境】Azure应用程序网关设置set_Cookie=key=value; SameSite=Strict; HTTPOnly,AzureAD登录使用cookie时使用不了的案例记录
469 0
|
JSON JavaScript 前端开发
Vue项目使用Cookie,以Json格式存入与读取Cookie,设置过期时间以及删除操作
这篇文章介绍了在Vue项目中如何使用JavaScript操作Cookie,包括设置、读取、设置过期时间以及删除Cookie的方法。
1038 0
|
JavaScript 前端开发 数据安全/隐私保护
JS中使用Cookie实现记住密码以及设置密码过期时间
JS中使用Cookie实现记住密码以及设置密码过期时间
739 0
|
存储 JavaScript PHP
什么是cookie,如何设置在浏览器页面关闭后清除cookie
什么是cookie,如何设置在浏览器页面关闭后清除cookie
1537 0
|
存储 安全 数据安全/隐私保护
Cookie 和 Session 的区别及使用 Session 进行身份验证的方法
【10月更文挑战第12天】总之,Cookie 和 Session 各有特点,在不同的场景中发挥着不同的作用。使用 Session 进行身份验证是常见的做法,通过合理的设计和管理,可以确保用户身份的安全和可靠验证。
1137 156
|
存储 前端开发 Java
【SpringMVC】——Cookie和Session机制
获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute
982 11
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
1991 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header