https下载和上传
一、依赖
<dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.3.4</version>
</dependency>
 <dependency>
       <groupId>org.apache.httpcomponents</groupId>
       <artifactId>httpmime</artifactId>
        <version>4.3.1</version>
  </dependency>
二、工具类
package com.bestway.imine.ai.util;
import com.alibaba.fastjson.JSONObject;
import com.bestway.imine.ai.enums.AlarmTypeEnum;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContexts;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import org.springframework.cloud.bootstrap.encrypt.KeyProperties;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
/**
 * @author ZHANG tianhong
 * @version 2022/1/26
 * @Description
 */
public class OssUtil {
    public static boolean downLoad(String url, File storeFile) {
        CloseableHttpClient httpClient = null;
        FileOutputStream fOut = null;
        InputStream in = null;
        try {
            httpClient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(url);
            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            in = httpEntity.getContent();
            fOut = new FileOutputStream(storeFile);
            int len = -1;
            byte[] temp = new byte[4096];
            while ((len = in.read(temp)) != -1) {
                fOut.write(temp, 0, len);
            }
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                if (null != fOut) {
                    fOut.close();
                }
                if (null != in) {
                    in.close();
                }
                if (null != httpClient) {
                    httpClient.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static JSONObject upLoad(String url, File uploadFile, String auth,String name) {
        CloseableHttpClient httpClient = null;
        try {
            httpClient = getHttpsClient();
            HttpPost httpPost = new HttpPost(url);
            /*HttpHost proxy = new HttpHost("127.0.0.1", 8888);
            RequestConfig requestConfig = RequestConfig.custom()
                    .setProxy(proxy)
                    .setConnectTimeout(10000)
                    .setSocketTimeout(10000)
                    .setConnectionRequestTimeout(3000)
                    .build();
            httpPost.setConfig(requestConfig);*/
            MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
            multipartEntityBuilder.setMode(HttpMultipartMode.RFC6532)
                    .addBinaryBody(name, uploadFile, ContentType.create("application/mp4"), uploadFile.getName());
            httpPost.setEntity(multipartEntityBuilder.build());
            httpPost.addHeader("Authorization", "Bearer " + auth);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                return null;
            }
            return JSONObject.parseObject(EntityUtils.toString(httpResponse.getEntity()));
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                if (null != httpClient) {
                    httpClient.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    private static CloseableHttpClient getHttpsClient() {
        RegistryBuilder<ConnectionSocketFactory> registryBuilder = RegistryBuilder.<ConnectionSocketFactory>create();
        ConnectionSocketFactory plainSF = new PlainConnectionSocketFactory();
        registryBuilder.register("http", plainSF);
        // 指定信任密钥存储对象和连接套接字工厂
        try {
            KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
            // 信任任何链接
            TrustStrategy anyTrustStrategy = new TrustStrategy() {
                @Override
                public boolean isTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws java.security.cert.CertificateException {
                    // TODO Auto-generated method stub
                    return true;
                }
            };
            SSLContext sslContext = SSLContexts.custom().useTLS().loadTrustMaterial(trustStore, anyTrustStrategy).build();
            LayeredConnectionSocketFactory sslSF = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            registryBuilder.register("https", sslSF);
        } catch (KeyStoreException e) {
            throw new RuntimeException(e);
        } catch (KeyManagementException e) {
            throw new RuntimeException(e);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
        Registry<ConnectionSocketFactory> registry = registryBuilder.build();
        // 设置连接管理器
        PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(registry);
        // 构建客户端
        return HttpClientBuilder.create().setConnectionManager(connManager).build();
    }
}
三、应用
fileName = mineId+cameraSeal.getCameraCodeSeal()+AlarmTypeEnum.VEDIO_OCCLUSION.getAnalysisCode()+MyDateUtils.getStringDate(alarmRealtimeInfo.getTime())+".mp4";
//File file = new File("d:\\123.mp4");
 File file = new File("/mp4/"+fileName);
 if (file.exists()) {
      file.delete();
  }else {
        boolean a = OssUtil.downLoad(alarmRealtimeInfo.getAlarmVideo(), file);
        if (a) {
            log.info("下载文件成功========================" + fileName);
            log.info("上传停产停工摄像仪遮挡数据文件名:"+fileName);
            log.info("POST请求调用上传停产停工摄像仪遮挡数据网址:"+host +NetworkingConstants.occlusionmovAngleVideoUrl);
            try{
                result = OssUtil.upLoad(host +NetworkingConstants.occlusionmovAngleVideoUrl,file,token,NetworkingConstants.CAMERA_COVER_VIDEO).toString();
                ResultVo resultVo =JSON.parseObject(result,ResultVo.class);
                 if (resultVo!=null && resultVo.getCode().equals("0")) {
                      if (file.exists()) {
                           file.delete();
                       }
                      log.info("上传成功!");
                   }else{
                       log.info("上传失败!");
                         }
               }catch (Exception e){
                       log.info("POST请求调用上传停产停工摄像仪遮挡数据失败");
                  }
           }else{
                log.info("下载失败!");
                }
       }
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号