• httpClient4.5.12,获取Cookie


    方式一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;
        }
    
    }
    



  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    Linux的压缩和解压命令
    RabbitMQ消费消息的两种模式:推和拉
    没有开启keepalive,接收消息会超时
    不止背锅!互联网大厂的运维都在干什么?30K的总监来告诉你
    tcp 开启keepalive
  • 原文地址:https://www.cnblogs.com/Alexr/p/13397171.html
Copyright © 2020-2023  润新知