zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    代码品质
    窖藏好题
    最后一次模拟
    几个有意思的题目
    【数组练习】
    【复习】图论
    【复习】后缀数组
    The Usage Of Difference Table
    【复习】NTT注意事项
    CF999E Reachability from the Capital
  • 原文地址:https://www.cnblogs.com/i-tao/p/13638904.html
Copyright © 2011-2022 走看看