java http获取cookie_httpurlconnect工具和获取cookie的方法

该博客主要展示了Java代码实现HTTP请求及获取Cookie的方法。包含GET和POST两种请求方式的连接方法,以及对应方式下获取Cookie的方法。代码中处理了请求头部参数、编码等,还对可能出现的异常进行了捕获。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package Httpclient_test.Httpclient_test;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.zip.GZIPInputStream;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

public class HttpClient {

/**

* GET 方式连接

* url:链接

* headers 请求头部参数

* charset 编码

* return response

*/

public static String get(String url,Mapheaders,String charset) {

try {

URL u = new URL(url);

HttpURLConnection conn = (HttpURLConnection) u.openConnection();

conn.setInstanceFollowRedirects(false);

conn.setRequestMethod("GET");

for (String header : headers.keySet()) {

conn.setRequestProperty(header, headers.get(header));

}

conn.connect();

if(conn.getResponseCode()==404) {

return null;

}

BufferedReader reader=null;

if(conn.getHeaderField("Content-Encoding")!=null && conn.getHeaderField("Content-Encoding").equals("gzip")) {

reader=new BufferedReader(new InputStreamReader(new GZIPInputStream(conn.getInputStream()) , charset));

}else {

reader=new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));

}

String line=null;

StringBuilder sb=new StringBuilder();

while((line=reader.readLine())!=null) {

sb.append(line);

}

conn.disconnect();

return sb.toString();

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* GET 方式获取cookie

* url 链接

* headers 请求头部参数

* charset 编码

* return cookie

*/

public static String get_cookie(String url,Mapheaders,String charset) {

try {

URL u = new URL(url);

HttpURLConnection conn = (HttpURLConnection) u.openConnection();

conn.setInstanceFollowRedirects(false);

conn.setRequestMethod("GET");

for (String header : headers.keySet()) {

conn.setRequestProperty(header, headers.get(header));

}

conn.connect();

String cookie="";

Map> respone_headers=conn.getHeaderFields();

for (String key : respone_headers.keySet()) {

if(key!=null &&key.equals("Set-Cookie")) {

System.err.println(respone_headers.get(key));

List string = respone_headers.get(key);

StringBuilder builder = new StringBuilder();

//for (String str : string) {

//builder.append(str).toString();

//}

//cookie=builder.toString();

for (String string2 : string) {

if(string2.startsWith("JSESSIONID=")) {

cookie=string2;

}

}

}

}

conn.disconnect();

return cookie;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

*post 方式连接

* @param url 链接

* @param params 请求参数

* @param headers 请求头部参数

* @param charSet 编码

* @return response

*/

public static String post(String url,Mapparams,Mapheaders,String charSet) {

try {

URL url1=new URL(url);

HttpURLConnection conn=(HttpURLConnection) url1.openConnection();

//输入参数

conn.setDoOutput(true);

//不使用缓存

conn.setUseCaches(false);

conn.setConnectTimeout(60*2000);

for (String header : headers.keySet()) {

conn.setRequestProperty(header, headers.get(header));

}

conn.setRequestMethod("POST");

conn.connect();

if(params!=null && params.keySet().size()>0) {

StringBuilder sb=new StringBuilder();

for (String key : params.keySet()) {

sb.append(key+"="+URLEncoder.encode(params.get(key),charSet)+"&");

}

String param=sb.delete(sb.length()-1, sb.length()).toString();

//System.err.println(param);

DataOutputStream out=new DataOutputStream(conn.getOutputStream());

out.writeBytes(param);

out.flush();

out.close();

}

BufferedReader reader=null;

if(conn.getHeaderField("Content-Encoding")!=null && conn.getHeaderField("Content-Encoding").equals("gzip")) {

reader=new BufferedReader(new InputStreamReader(new GZIPInputStream(conn.getInputStream()) , charSet));

}else {

reader=new BufferedReader(new InputStreamReader(conn.getInputStream(), charSet));

}

String line=null;

StringBuilder sb=new StringBuilder();

while((line=reader.readLine())!=null) {

sb.append(line);

}

conn.disconnect();

return sb.toString();

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* post方式连接获取cookie

* @param url 链接

* @param params 请求参数

* @param headers 请求头部参数

* @param charSet 编码

* @return cookie

*/

public static String post_cookie(String url,Mapparams,Mapheaders,String charSet) {

try {

URL url1=new URL(url);

HttpURLConnection conn=(HttpURLConnection) url1.openConnection();

conn.setRequestMethod("POST");

//输入参数

conn.setDoOutput(true);

//不使用缓存

conn.setUseCaches(false);

conn.setInstanceFollowRedirects(false);

conn.setConnectTimeout(60*1000);

for (String header : headers.keySet()) {

conn.setRequestProperty(header, headers.get(header));

}

conn.connect();

if(params!=null && params.keySet().size()>0) {

StringBuilder sb=new StringBuilder();

for (String key : params.keySet()) {

sb.append(key+"="+URLEncoder.encode(params.get(key),charSet)+"&");

}

String param=sb.delete(sb.length()-1, sb.length()).toString();

DataOutputStream out=new DataOutputStream(conn.getOutputStream());

out.writeBytes(param);

out.flush();

out.close();

}

String cookie="";

Map> respone_headers=conn.getHeaderFields();

for (String key : respone_headers.keySet()) {

//System.err.println(respone_headers.get(key));

if(key!=null &&key.equals("Set-Cookie")) {

List string = respone_headers.get(key);

StringBuilder builder = new StringBuilder();

for (String str : string) {

System.err.println(str);

builder.append(str).toString();

}

cookie=builder.toString();

}

}

conn.disconnect();

return cookie;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值