• Httpclient工具类


    一、引入依赖包
         <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
            </dependency>     
         <dependency>       
          <groupId>com.alibaba</groupId>       
          <artifactId>fastjson</artifactId>       
          <version>1.2.62</version>     
            </dependency>
    

     二、工具类 

    package com.sskd.drm.utils;
    
    import java.util.*;
    
    import com.alibaba.fastjson.JSON;
    import org.apache.http.*;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.*;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.entity.mime.MultipartEntityBuilder;
    import org.apache.http.entity.mime.content.FileBody;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import java.io.IOException;
    
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.ssl.SSLContexts;
    import javax.net.ssl.SSLContext;
    import org.apache.http.conn.ssl.NoopHostnameVerifier;
    import java.io.*;
    import java.io.File;
    
    /**
     * @name HttpClientUtils
     * @Description Httpclient工具类
     * @author Mr.bai
     * @time  2020/5/15 13:06
     * @version 1.0
     */
    public class HttpClientUtils {
    
        /**
         * get请求
         * @param url url地址
         * @param parameters 参数map集
         * @param headers header集
         * @return
         */
        public static String getrequest(String url,Map<String, String> parameters,Map<String,String> headers){
            String basicUrl=url;
            String result=null;
            CloseableHttpClient httpclient=getignoreSSLClient();
            List<NameValuePair> formData=new ArrayList<>();
            try {
                //参数分离
                if(!url.contains("=")) {
                    if(parameters !=null && parameters.size()>0) {
                        for(Map.Entry<String,String> entry:parameters.entrySet()) {
                            String k =entry.getKey();
                            String v=entry.getValue();
                            formData.add(new BasicNameValuePair(k, v));
                        }
                    }
                    String urlencoded =EntityUtils.toString(new UrlEncodedFormEntity(formData, Consts.UTF_8));
                    if(basicUrl.contains("?")) {
                        basicUrl += urlencoded;
                    }else {
                        basicUrl+= "?"+urlencoded;
                    }
                }
                //纯url
                HttpGet get=new HttpGet(basicUrl);
                if(headers !=null && headers.size()>0) {
                    for(Map.Entry<String, String> entry:headers.entrySet()) {
                        get.setHeader(entry.getKey(),entry.getValue());
                    }
                }else {
                    get.setHeader(null);
                }
                HttpResponse response=httpclient.execute(get);
                return getResult(response);
            }catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    if(httpclient!=null) {
                        httpclient.close();
                    }
                }catch(IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    
        /**
         * post(application/form-data)请求
         * @param url url地址
         * @param body 参数集 如果参数内需要传输文件,传File
         * @param headers header配置
         * @return
         */
        public static String postformData(String url,Map<String, Object> body,Map<String, String> headers){
            CloseableHttpClient httpclient = getignoreSSLClient();
            try {
                HttpPost post =new HttpPost(url);
                //请求表单参数
                MultipartEntityBuilder reqEntity = MultipartEntityBuilder.create();
                if (body != null && body.size() > 0){
                    for (String key : body.keySet()) {
                        if (body.get(key) instanceof File){
                            File file = (File) body.get(key);
                            FileBody fileBody = new FileBody(file);
                            reqEntity.addPart(key, fileBody);
                        }else {
                            reqEntity.addTextBody(key, body.get(key).toString(),ContentType.TEXT_PLAIN);
                        }
                    }
                    System.out.println("post(application/form-data)请求,构造参数完毕!");
                }
                post.setEntity(reqEntity.build());
                //设置header
                if(headers !=null && headers.size()>0) {
                    for (String key : headers.keySet()) {
                        post.setHeader(key,headers.get(key));
                    }
                }else {
                    post.setHeader(null);
                }
                HttpResponse response = httpclient.execute(post);
                return getResult(response);
            }catch(Exception e ) {
                System.err.println("请求出错\n错误信息:" +e.getMessage());
            }finally {
                try {
                    if(httpclient!=null) {
                        httpclient.close();
                    }
                }catch(Exception e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    
        /**
         * post(application/json)
         * @param url url地址
         * @param body 参数集
         * @param headers header配置
         * @return
         */
        public static String postJsonrequest(String url , Map<Object, Object> body , Map<Object, Object> headers){
            HttpPost post =new HttpPost(url);
            CloseableHttpClient httpclient=getignoreSSLClient();
            try {
                if(headers !=null && headers.size()>0) {
                    for(Map.Entry<Object, Object> entry:headers.entrySet()) {
                        post.setHeader(entry.getKey().toString(),entry.getValue().toString());
                    }
                }else {
                    post.setHeader("Content-Type","application/json;charset=UTF-8");
                    //header设置完毕
                }
                //body转string,处理entity传入httpEntity
                StringEntity newEntity=new StringEntity(JSON.toJSONString(body),"utf-8");
                post.setEntity(newEntity);;
                HttpResponse response=httpclient.execute(post);
                return getResult(response);
            }catch (Exception e) {
                System.err.println("请求出错\n错误信息:" +e.getMessage());
            }finally {
                try {
                    if(httpclient!=null) {
                        httpclient.close();
                    }
    
                }catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    
        /**
         * 下载文件
         * @param url 下载文件地址
         * @param localfileName 本地储存路径,
         * @param remotefileName 服务器资源路径
         */
        public static void downloadfile(String url,String localfileName,String remotefileName) {
            FileOutputStream output = null;
            InputStream in = null;
            CloseableHttpClient httpclient=getignoreSSLClient();
            try {
                HttpGet get=new HttpGet(url);
                get.addHeader("fileName",remotefileName );
                HttpResponse response=httpclient.execute(get);
                HttpEntity entity =response.getEntity();
                in = entity.getContent();
                long length = entity.getContentLength();
                if (length <= 0) {
                    return;
                }
                File localfile = new File(localfileName);
    
                if(! localfile.exists()) {
                    localfile.createNewFile();
                }
                output=new FileOutputStream(localfile);
                byte[] buffer = new byte[4096];
                int readLength = 0;
                while ((readLength=in.read(buffer)) > 0) {
                    byte[] bytes = new byte[readLength];
                    System.arraycopy(buffer, 0, bytes, 0, readLength);
                    output.write(bytes);
                }
                output.flush();
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if(in !=null) {
                        in.close();
                    }
                    if(output !=null) {
                        output.close();
                    }
                }catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 上传文件
         * @param localfilepath 文件路径
         * @param url 上传文件的url
         */
        public static String uploadfile(String localfilepath,String url) {
            CloseableHttpClient httpclient=getignoreSSLClient();
            try {
                HttpPost post = new HttpPost(url);
                FileBody bin=new FileBody(new File(localfilepath));
                HttpEntity entity = MultipartEntityBuilder.create().addPart("audioData",bin).build();
                post.setEntity(entity);
                HttpResponse response=httpclient.execute(post);
                return getResult(response);
            }catch(Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    if(httpclient!=null ) {
                        httpclient.close();
                    }
                }catch(Exception e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    
        /**
         * ssl安全跳过
         * @return
         */
        private static CloseableHttpClient getignoreSSLClient() {
            CloseableHttpClient client =null;
            try {
                SSLContext sslContext=SSLContexts.custom().loadTrustMaterial(null, (x509Certificates, s) -> true).build();
                client=HttpClients.custom().setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
            }catch(Exception e) {
                System.err.println("配置跳过ssl证书出错:" + e.getMessage());
            }
            return client;
        }
    
        private static String getResult(HttpResponse response) throws IOException {
            HttpEntity entity=response.getEntity();
            int errorCode= response.getStatusLine().getStatusCode();
            if (HttpStatus.SC_OK==errorCode){
                if (entity != null){
                    String result =EntityUtils.toString(entity,"utf-8");
                    //关闭entity
                    EntityUtils.consume(entity);
                    return result;
                }
            }
            System.err.println("请求出错\n状态码:"+errorCode+"\n错误信息"+EntityUtils.toString(entity,"utf-8"));
            return null;
        }
    }
      
    

      

  • 相关阅读:
    sql 数据库还原脚本 (kill链接+独占
    最长回文字符串
    UVa 455 Periodic Strings
    UVa 1225 Digit Counting
    UVa 340 Master-Mind Hints
    UVa 10976
    UVa 725
    UVa 11059
    POJ1887 最长下降子序列
    最大连续子序列算法(数组的连续子数组最大和(首尾不相连))
  • 原文地址:https://www.cnblogs.com/yuarvin/p/15994154.html
Copyright © 2020-2023  润新知