天天看点

HttpClient模拟登录

pom依赖

<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.6</version>
        </dependency>
           
package cc.mrbird.febs.system.collection.cs;

import org.apache.http.*;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;

import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;

//模拟get请求带参数
public class CshttpClient {

    private static CloseableHttpClient httpClient = HttpClientBuilder.create().build();

    public static void login(){
        String loginurl = "XXXXXXXXXXXXXXXXXXXX?UserName=XXXX&PassWord=XXXXXXX";
        // 构造参数,即模拟需要输入的参数
        HttpGet httpPost = new HttpGet(loginurl);
        httpPost.addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36");
        CloseableHttpResponse response = null;
        try {
            // 向后台请求数据,登陆网站
            response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            String result = EntityUtils.toString(entity, StandardCharsets.UTF_8);
            System.out.println("zhengyihao" + result + "zhengyihao");
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally {
            try {
                response.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }

//模拟post请求,参数类型为Request Payload类型
public static void fb() {
        String fburl = "XXXXXXXXXXXXXXXXXXXXXXXXXX";
        HttpPost httpPost = new HttpPost(fburl);
        httpPost.addHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36");
        httpPost.addHeader(new BasicHeader("Connection","keep-alive"));
        httpPost.addHeader(new BasicHeader("Sec-Fetch-Mode","cors"));
        httpPost.addHeader(new BasicHeader("Origin","https://wcm.cdstm.cn"));
        httpPost.addHeader(new BasicHeader("X-Requested-With","XMLHttpRequest"));
        httpPost.addHeader(new BasicHeader("Content-Type","application/json;charset=UTF-8"));
        httpPost.addHeader(new BasicHeader("Accept","application/json"));
        httpPost.addHeader(new BasicHeader("Sec-Fetch-Site","same-origin"));
        httpPost.addHeader(new BasicHeader("Accept-Encoding","gzip, deflate, br"));
        httpPost.addHeader(new BasicHeader("Accept-Language","zh-CN,zh;q=0.9"));

        //        httpPost.addHeader("X-Requested-With","XMLHttpRequest");
//        httpPost.setHeader("Content-Type","text/html;charset=utf-8");
        CloseableHttpResponse response = null;

        try{                                                                 //csxml()方法为自己拼接组成的Request Payload参数
            StringEntity stringEntity = new StringEntity(csxml(), Charset.forName("UTF-8"));
            stringEntity.setContentType(new BasicHeader("Content-Type","application/json; charset=utf-8"));
            stringEntity.setContentEncoding(Consts.UTF_8.name());
            httpPost.setEntity(stringEntity);
            response = httpClient.execute(httpPost);
            if(response.getStatusLine().getStatusCode() == 200){
                HttpEntity httpEntity = response.getEntity();
                String toStringEntity = EntityUtils.toString(httpEntity, StandardCharsets.UTF_8);
                System.out.println("monifabu" + toStringEntity + "monifabu");
                EntityUtils.consume(httpEntity);
            }else if(response.getStatusLine().getStatusCode() == 302){
                System.out.println("运行失败了");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try{
            response.close();
            httpClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            System.out.println("关闭资源");
        }
    }
}
           

教程点击我