Java工具类HttpUtil

1.依赖

<!--HttpClient-->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.12</version>
</dependency>

2.代码

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

public class HttpUtil {
    /**
     * HttpClient send Post
     */
    public byte[] httpClientPost(final String url,final List<NameValuePair> params){
        // 客户端实例
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // post实例
        HttpPost httpPost = new HttpPost(url);
        // 返回请求
        CloseableHttpResponse response = null;
        // IO流
        InputStream inputStream = null;
        try {
            // 参数设置
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);
            entity.setContentType("application/json;charset=utf-8");
            httpPost.setEntity(entity);
            httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");
            // 返回请求
            response = httpClient.execute(httpPost);
            // 获取响应码
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != 200) {
                System.out.println("响应编码:" + response.getStatusLine().getStatusCode());
                System.out.println("请求失败:" + response.getStatusLine().getReasonPhrase());
            } else {
                System.out.println("响应编码:" + response.getStatusLine().getStatusCode());
                System.out.println("请求成功:" + response.getStatusLine().getReasonPhrase());
                // 获取全部的请求头
                Header[] headers = response.getAllHeaders();
                for (int i = 0; i < headers.length; i++) {
                    System.out.println("全部的请求头:" + headers[i]);
                }
                // 获取响应消息实体
                HttpEntity httpEntity = response.getEntity();
                // 返回IO流
                inputStream = httpEntity.getContent();
                // 返回bytes
                byte[] buffer = new byte[1024];
                int len = 0;
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                while ((len = inputStream.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                bos.close();
                // 返回响应内容
                return bos.toByteArray();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭inputStream和httpResponse
            if (inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (response != null){
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
        return null;
    }
    /**
     * HttpClient send Get
     */
    public byte[] httpClientGet(final String url){
        // 客户端实例
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // post实例
        HttpGet httpGet = new HttpGet(url);
        // 返回请求
        CloseableHttpResponse response = null;
        // IO流
        InputStream inputStream = null;
        try {
            // 参数设置
            httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");
            // 返回请求
            response = httpClient.execute(httpGet);
            // 获取响应码
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != 200) {
                System.out.println("响应编码:" + response.getStatusLine().getStatusCode());
                System.out.println("请求失败:" + response.getStatusLine().getReasonPhrase());
            } else {
                System.out.println("响应编码:" + response.getStatusLine().getStatusCode());
                System.out.println("请求成功:" + response.getStatusLine().getReasonPhrase());
                // 获取全部的请求头
                Header[] headers = response.getAllHeaders();
                for (int i = 0; i < headers.length; i++) {
                    System.out.println(headers[i]);
                }
                // 获取响应消息实体
                HttpEntity httpEntity = response.getEntity();
                // 返回IO流
                inputStream = httpEntity.getContent();
                // 返回bytes
                byte[] buffer = new byte[1024];
                int len = 0;
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                while ((len = inputStream.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                bos.close();
                // 返回响应内容
                return bos.toByteArray();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭inputStream和httpResponse
            if (inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (response != null){
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
        return null;
    }
    /**
     * HttpURLConnection send Post
     */
    public byte[] httpPost(final String uri,final String params){
        HttpURLConnection connection = null;
        InputStream inputStream = null;
        try {
            URL url = new URL(uri);
            connection = (HttpURLConnection) url.openConnection();
            // 读取超时
            connection.setReadTimeout(5000);
            // 连接超时
            connection.setConnectTimeout(5000);
            // 缓存
            connection.setUseCaches(false);
            // 发送方式
            connection.setRequestMethod("POST");
            // 允许输入输出
            connection.setDoOutput(true);
            connection.setDoInput(true);
            // 设置headers
            connection.setRequestProperty("Content-Type","application/json;charset=utf-8");
            connection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36");
            // 参数设置
            OutputStream outputStream = connection.getOutputStream();
            outputStream.write(params.getBytes("UTF-8"));
            outputStream.flush();
            outputStream.close();
            // 返回码
            int responseCode = connection.getResponseCode();
            if(responseCode != 200){
                System.out.println("请求失败:" + connection.getResponseMessage());
                System.out.println("响应编码:" + connection.getResponseCode());
                return null;
            }else{
                System.out.println("请求成功:" + connection.getResponseMessage());
                System.out.println("响应编码:" + connection.getResponseCode());
                // 返回headers
                Map<String, List<String>> map = connection.getHeaderFields();
                System.out.println(map.toString());
                // 返回流
                inputStream = connection.getInputStream();
                // 返回bytes
                byte[] buffer = new byte[1024];
                int len = 0;
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                while ((len = inputStream.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                bos.close();
                // 返回响应内容
                return bos.toByteArray();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭inputStream和httpResponse
            if (inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null){
                connection.disconnect();
            }
        }
        return null;
    }
    /**
     * HttpURlConnection send Get
     */
    public byte[] httpGet(final String uri){
        HttpURLConnection connection = null;
        InputStream inputStream = null;
        try {
            URL url = new URL(uri);
            connection = (HttpURLConnection) url.openConnection();
            // 读取超时
            connection.setReadTimeout(5000);
            // 连接超时
            connection.setConnectTimeout(5000);
            // 缓存
            connection.setUseCaches(false);
            // 发送方式
            connection.setRequestMethod("GET");
            // 设置headers
            connection.setRequestProperty("Content-Type","application/json;charset=utf-8");
            connection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36");
            // 返回码
            int responseCode = connection.getResponseCode();
            if(responseCode != 200){
                System.out.println("请求失败:" + connection.getResponseMessage());
                System.out.println("响应编码:" + connection.getResponseCode());
                return null;
            }else{
                System.out.println("请求成功:" + connection.getResponseMessage());
                System.out.println("响应编码:" + connection.getResponseCode());
                // 返回headers
                Map<String, List<String>> map = connection.getHeaderFields();
                System.out.println(map.toString());
                // 返回流
                inputStream = connection.getInputStream();
                // 返回bytes
                byte[] buffer = new byte[1024];
                int len = 0;
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                while ((len = inputStream.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                bos.close();
                // 返回响应内容
                return bos.toByteArray();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭inputStream和httpResponse
            if (inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null){
                connection.disconnect();
            }
        }
        return null;
    }

    public static void main(String[] args) {
        String url = "http://img1.juimg.com/181219/330479-1Q2191H04958.jpg";
        //byte[] bytes = new HttpUtil().httpClientGet(url);
        byte[] bytes = new HttpUtil().httpGet(url);
        System.out.println(bytes.length);
    }
}
原文地址:https://www.cnblogs.com/i-tao/p/13638904.html