
方式一Set-Cookie
package com.httpclient;
import com.util.CommonMethord;
import org.apache.http.*;
import org.apache.http.client.CookieStore;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.LaxRedirectStrategy;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
// https://my.oschina.net/u/2353992/blog/707973
//https://blog.csdn.net/xiaoxian8023/article/details/50474987
public class TestCookie {
public static void main(String[] args) {
loginPost( "http://192.168.31.193:8080/consumer/loginAction.do?method=login",
"logonname=admin&password=abc123&logindate=2020-07-27&Submit=");
}
// 登录
public static String loginPost(String url, String parameters) {
// 1 创建请求连接
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionTimeToLive(6000, TimeUnit.MILLISECONDS)
.build();
HttpPost httpPost = new HttpPost( url.trim() );
httpPost.setHeader(new BasicHeader("Content-type", "application/x-www-form-urlencoded"));
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
// 2 判断参数不为空值时,进行切割
if (!CommonMethord.isEmpty( parameters )) {
String[] parameter_array = parameters.split( "&" );
for (String line : parameter_array) {
String[] parameter = line.split( "=" );
if (parameter.length >= 2) {
formparams.add( new BasicNameValuePair( parameter[0], parameter[1] ) );
} else {
formparams.add( new BasicNameValuePair( parameter[0], "" ) );
}
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity( formparams, Consts.UTF_8 ); //对参数进行编码
httpPost.setEntity( entity );
}
// 获取返回对象
String result = ""; //
CloseableHttpResponse resp; //返回结果
try {
// 发送请求
resp = httpClient.execute( httpPost );
// Cookie
Header[] headers = resp.getHeaders( "Set-Cookie" );
if(headers != null){
for(Header header:headers){
System.out.println( "========完整值===========" + header.toString());
System.out.println( "name==" + header.getName());
System.out.println( "value==" + header.getValue());
}
}
// http 状态 200 404 302 500
StatusLine line = resp.getStatusLine(); //返回带有Cookie
System.out.println( "状态返回码:" + line );
// 结果
HttpEntity httpEntity = resp.getEntity();
if (httpEntity != null) {
// 结果转换
result = EntityUtils.toString( httpEntity, "utf-8" );
// System.out.println("resp"+ resp.getEntity());
// System.out.println( result );
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}

方式二 localContext
package com.httpclient;
import com.util.CommonMethord;
import org.apache.http.*;
import org.apache.http.client.CookieStore;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.LaxRedirectStrategy;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class TestCookie {
public static void main(String[] args) {
loginPost( "http://192.168.31.193:8080/consumer/loginAction.do?method=login",
"logonname=admin&password=abc123&logindate=2020-07-27&Submit=");
}
// 登录
public static String loginPost(String url, String parameters) {
// 1 创建请求连接
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionTimeToLive(6000, TimeUnit.MILLISECONDS)
.build();
HttpPost httpPost = new HttpPost( url.trim() );
httpPost.setHeader(new BasicHeader("Content-type", "application/x-www-form-urlencoded"));
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
// 2 判断参数不为空值时,进行切割
if (!CommonMethord.isEmpty( parameters )) {
String[] parameter_array = parameters.split( "&" );
for (String line : parameter_array) {
String[] parameter = line.split( "=" );
if (parameter.length >= 2) {
formparams.add( new BasicNameValuePair( parameter[0], parameter[1] ) );
} else {
formparams.add( new BasicNameValuePair( parameter[0], "" ) );
}
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity( formparams, Consts.UTF_8 ); //对参数进行编码
httpPost.setEntity( entity );
}
// 获取返回对象
String result = ""; //
CloseableHttpResponse resp; //返回结果
try {
// 发送请求
HttpClientContext localContext = HttpClientContext.create();
resp = httpClient.execute( httpPost,localContext );
// Cookie
List<Cookie> cookies = localContext.getCookieStore().getCookies();
for(int i= 0; i<cookies.size();i++){
if (cookies.get( i ).getName().equals( "JSESSIONID" )){
String JSESSIONID = cookies.get( i ).getValue();
}
System.out.println( "========完整值===========" + cookies.get( i ));
System.out.println( "name==" + cookies.get( i ).getName());
System.out.println( "value==" + cookies.get( i ).getValue());
System.out.println( "domain==" + cookies.get( i ).getDomain());
System.out.println( "path==" + cookies.get( i ).getPath());
}
// http 状态 200 404 302 500
StatusLine line = resp.getStatusLine(); //返回带有Cookie
System.out.println( "状态返回码:" + line );
// 结果
HttpEntity httpEntity = resp.getEntity();
if (httpEntity != null) {
// 结果转换
result = EntityUtils.toString( httpEntity, "utf-8" );
// System.out.println("resp"+ resp.getEntity());
// System.out.println( result );
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
