CZT
2023-12-12 a82631013be641db3979e11013b2cf6e937a3e7b
src/main/java/com/fzzy/push/whhpjl/Whjl2023HttpClientUtil.java
@@ -1,174 +1,78 @@
package com.fzzy.push.whhpjl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.fzzy.api.entity.ApiConfs;
import com.fzzy.api.utils.AESUtils;
import com.fzzy.api.utils.MyMD5Util;
import com.fzzy.api.utils.SnowflakeIdWorker;
import com.fzzy.push.gd2022.dto.GD2022AuthToken;
import com.fzzy.push.whhpjl.dto.WhjlPullReqDto;
import com.fzzy.push.whhpjl.dto.WhjlPullRespDto;
import com.fzzy.push.whhpjl.dto.WhjlReqDto;
import com.fzzy.push.whhpjl.dto.WhjlRespDto;
import lombok.extern.slf4j.Slf4j;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.lang.reflect.Type;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
/**
 * 武汉军粮省平台-上传数据服务类
 *
 * @author czt
 * @date 2023/08/04
 * @date 2023/10/23
 */
@Slf4j
@Component
public class Whjl2023HttpClientUtil {
    @Autowired
    private RestTemplate restTemplate;
    /**
     * post formData
     * 数据上报post请求
     * @param url
     * @param map
     * @param reqData
     * @return
     * @throws Exception
     */
    @SuppressWarnings("resource")
    public static WhjlRespDto postGetToken(String url, Map<String, Object> map) throws Exception {
        log.info("---------接口请求地址:" +url+ "----------参数:" + JSON.toJSONString(map) +"---------");
        BufferedReader in = null;
        URL urls = new URL(url);
        HttpURLConnection connection = null;
        OutputStream outputStream = null;
    public WhjlRespDto postPushData(String url, WhjlReqDto reqData) {
        log.info("---------接口请求地址:" + url + "----------参数:" + JSON.toJSONString(reqData) + "---------");
        String rs = "";
        WhjlRespDto responseDto;
        try {
            connection = (HttpURLConnection) urls.openConnection();
            connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");
            connection.setRequestProperty("Accept", "*/*");
            connection.setRequestProperty("Range", "bytes=" + "");
            connection.setConnectTimeout(20000);
            connection.setReadTimeout(30000);
            connection.setRequestMethod("POST");
            rs = restTemplate.postForObject(url, reqData, String.class);
            StringBuffer buffer = new StringBuffer();
            outputStream = connection.getOutputStream();
            buffer.append(JSON.toJSONString(map));
            outputStream.write(buffer.toString().getBytes());
            try {
                connection.connect();
                if (connection.getResponseCode() == 200) {
                    in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
                    String line = "";
                    while ((line = in.readLine()) != null) {
                        rs += line;
                    }
                }else{
                    log.error("http状态:" + connection.getResponseCode());
                    log.error("http消息:" + connection.getResponseMessage());
                }
            } catch (Exception e) {
                System.out.println("发生异常");
                log.error(e.getMessage(),e);
                rs = null;
                return new WhjlRespDto(99,e.getMessage());
            }
            log.info("---------接口返回:" + rs +"---------");
            Type type = new TypeReference<WhjlRespDto<GD2022AuthToken>>() {}.getType();
            responseDto = JSON.parseObject(rs,type);
            if(responseDto == null )   return new WhjlRespDto(99,"接口请求发生未知错误");
            return responseDto;
        } finally {
            try {
                outputStream.close();
                if (in != null){
                    in.close();
                }
            } catch (Exception e) {
            }
            outputStream = null;
            if (connection != null)
                connection.disconnect();
            connection = null;
        } catch (Exception e) {
            System.out.println("发生异常");
            log.error(e.getMessage(), e);
            rs = null;
            return new WhjlRespDto(99, e.getMessage());
        }
        log.info("---------接口返回:" + rs + "---------");
        responseDto = JSON.parseObject(rs, WhjlRespDto.class);
        if (responseDto == null) return new WhjlRespDto(99, "接口请求发生未知错误");
        return responseDto;
    }
    /**
     * post formData
     * 数据上报post请求
     * @param url
     * @param reqData
     * @return
     * @throws Exception
     */
    @SuppressWarnings("resource")
    public static WhjlRespDto postPushData(String url, String data , ApiConfs apiConfs, GD2022AuthToken authToken) throws Exception {
        log.info("---------接口请求地址:" +url+ "----------参数:" + data +"---------");
        BufferedReader in = null;
        URL urls = new URL(url);
        HttpURLConnection connection = null;
        OutputStream outputStream = null;
    public WhjlPullRespDto postPullData(String url, WhjlPullReqDto reqData) {
        log.info("---------接口请求地址:" + url + "----------参数:" + JSON.toJSONString(reqData) + "---------");
        String rs = "";
        WhjlRespDto responseDto;
        try {
            String md = AESUtils.encrypt(data,apiConfs.getPublicKey());
            log.info("---------接口请求地址:" +url+ "----------密文参数:" + md +"---------");
            connection = (HttpURLConnection) urls.openConnection();
            connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");
            connection.setRequestProperty("Accept", "*/*");
            connection.setRequestProperty("Range", "bytes=" + "");
            connection.setRequestProperty("Authorization", "Bearer " + authToken.getAccess_token() );
            connection.setRequestProperty("nonce", AESUtils.encrypt(authToken.getAccess_token() + System.currentTimeMillis(),apiConfs.getPublicKey()));
            connection.setRequestProperty("requestId", AESUtils.encrypt(authToken.getAccess_token() + SnowflakeIdWorker.nextId(),apiConfs.getPublicKey()));
            connection.setRequestProperty("digest", MyMD5Util.encrypt(data));
            connection.setConnectTimeout(20000);
            connection.setReadTimeout(30000);
            connection.setRequestMethod("POST");
            StringBuffer buffer = new StringBuffer();
            buffer.append(md);
            outputStream = connection.getOutputStream();
            outputStream.write(buffer.toString().getBytes("UTF-8"));
            try {
                connection.connect();
                if (connection.getResponseCode() == 200) {
                    in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
                    String line = "";
                    while ((line = in.readLine()) != null) {
                        rs += line;
                    }
                }else{
                    log.error("http状态:" + connection.getResponseCode());
                    log.error("http消息:" + connection.getResponseMessage());
                }
        WhjlPullRespDto responseDto;
            } catch (Exception e) {
                System.out.println("发生异常");
                log.error(e.getMessage(),e);
                rs = null;
                return new WhjlRespDto(99,e.getMessage());
            }
            log.info("---------接口返回:" + rs +"---------");
            responseDto = JSON.parseObject(rs,WhjlRespDto.class);
            if(responseDto == null )   return new WhjlRespDto(99,"接口请求发生未知错误");
            return responseDto;
        } finally {
            try {
                outputStream.close();
                if (in != null){
                    in.close();
                }
            } catch (Exception e) {
            }
            outputStream = null;
            if (connection != null)
                connection.disconnect();
            connection = null;
        try {
            rs = restTemplate.postForObject(url, reqData, String.class);
        } catch (Exception e) {
            System.out.println("发生异常");
            log.error(e.getMessage(), e);
            rs = null;
            return new WhjlPullRespDto(99, null);
        }
        log.info("---------接口返回:" + rs + "---------");
        responseDto = JSON.parseObject(rs, WhjlPullRespDto.class);
        if (responseDto == null) return new WhjlPullRespDto(99, "接口请求发生未知错误");
        return responseDto;
    }
}