java发送http或https请求

时间:2025-03-30 08:08:45

引入依赖

<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.8</version>
        </dependency>

代码



import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


@Service
public class GAPlusServiceImpl implements GAPlusService {

    private static Logger LOG = LoggerFactory.getLogger(GAPlusServiceImpl.class);

    /**
     * header 的头信息
     */
    private static final String HEADER_PRE = "Bearer ";


    
    @Override
    public String submitTaskAddData(File file, String access_token, String questionId){
        String headerValue = HEADER_PRE + access_token;
        String filePath = upload(file, headerValue);
        if(StringUtils.isNotBlank(filePath)){

            return doSubmitTaskAddData(filePath, questionId, headerValue);
        }
        return null;
    }

    
    private String upload(File file, String headerValue){
        try {
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.uploadUrl)
                    .contentType("application/x-www-form-urlencoded")
                    .header("Authorization", headerValue)
                    .form("type", "zip")
                    .form("file", file)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
//                Map<String, Object> tokenMap = JSONUtil.toBean(body, Map.class);
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    return jsonObject.getStr("data");
                }else {
                    LOG.error("--------upload---------upload msg: " + jsonObject.toString());
                }

            }else if(401 == status){
                LOG.info("-----------upload----status is 401");
                throw new TokenExpiredException(HttpStatus.UNAUTHORIZED.value(), "登录状态已过期");
            } else {
                LOG.info("----------upload----status is " + status);
                LOG.info(tokenResponse.body());
                throw new TokenExpiredException(HttpStatus.UNAUTHORIZED.value(), "登录状态已过期");
            }
        }catch (TokenExpiredException e){
            throw new TokenExpiredException(HttpStatus.UNAUTHORIZED.value(), "登录状态已过期");
        } catch (Exception e){
            LOG.error("---------------upload error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String executeTask(String url, String headerValue) {
        try {
            HttpResponse tokenResponse = HttpUtil.createPost(url)
                    .contentType("application/x-www-form-urlencoded")
                    .header("Authorization", headerValue)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
//                Map<String, Object> tokenMap = JSONUtil.toBean(body, Map.class);
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------submitTask------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------v msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------submitTask------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------submitTask----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public List<GAPlusDataCatalogVO> queryGAPlusData(String headerValue) {
        List<GAPlusDataCatalogVO> catalogList = getDatabaseCatalog(headerValue);
        if(catalogList == null || catalogList.isEmpty()){
            LOG.info("------------catalogList is null...");
            return Commons.EMPTY;
        }
        for (GAPlusDataCatalogVO vo : catalogList) {
            List<GAPlusDataCatalogVO> dataCatalogVOS = getDatabaseDataByDatabaseCatalogId(vo.getValue(), headerValue);
            if(dataCatalogVOS != null){
                vo.setChildren(dataCatalogVOS);
            }
        }
        return catalogList;
    }

    @Override
    public String submitYjjbntDataTask(String dataId, String gdDataId, String headerValue) {
        LOG.info("----------------------submitYjjbntDataTask");
        com.alibaba.fastjson2.JSONObject gd_layer = new com.alibaba.fastjson2.JSONObject();
        gd_layer.put("type", "dataItem");
        gd_layer.put("value", gdDataId);

        LOG.info("----------gd_layer");
        LOG.info(gd_layer.toString());
        com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
        input_layer.put("type", "dataItem");
        input_layer.put("value", dataId);
        LOG.info("----------input_layer");
        LOG.info(input_layer.toString());
        LOG.info(GAPlusConfig.taskYjjbntUrl);
        try {
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskYjjbntUrl)
                    .contentType("multipart/form-data")
                    .header("Authorization", headerValue)
                    .form("input_layer", input_layer)
                    .form("gd_layer", gd_layer)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------submitYjjbntDataTask------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------submitYjjbntDataTask msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------submitYjjbntDataTask------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------submitYjjbntDataTask----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String submitGdbylDataTask(String dataId, String headerValue) {
        LOG.info("----------------------submitGdbylDataTask");
        com.alibaba.fastjson2.JSONObject req = new com.alibaba.fastjson2.JSONObject();
        req.put("type", "dataItem");
        req.put("value", dataId);
        LOG.info("----------input_layer");
        LOG.info(req.toString());
        LOG.info(GAPlusConfig.taskGdblyUrl);
        try {
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskGdblyUrl)
                    .contentType("multipart/form-data")
                    .header("Authorization", headerValue)
                    .form("input_layer", req)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------submitGdbylDataTask------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------submitGdbylDataTask msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------submitGdbylDataTask------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------submitGdbylDataTask----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String submitWdgdDataTask(String dataId, String headerValue) {
        com.alibaba.fastjson2.JSONObject req = new com.alibaba.fastjson2.JSONObject();
        req.put("type", "dataItem");
        req.put("value", dataId);
        try {
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskWdgdUrl)
                    .contentType("multipart/form-data")
                    .header("Authorization", headerValue)
                    .form("input_layer", req)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------submitWdgdDataTask------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------submitWdgdDataTask msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------submitWdgdDataTask------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------submitWdgdDataTask----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String submitYjjbntbhwcqkDataTask(String dataId, String gdDataId, String outDataId, String headerValue) {
        com.alibaba.fastjson2.JSONObject dltb_layer = new com.alibaba.fastjson2.JSONObject();
        dltb_layer.put("type", "dataItem");
        dltb_layer.put("value", gdDataId);


        com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
        input_layer.put("type", "dataItem");
        input_layer.put("value", dataId);


        com.alibaba.fastjson2.JSONObject overlay_layer = new com.alibaba.fastjson2.JSONObject();
        overlay_layer.put("type", "dataItem");
        overlay_layer.put("value", outDataId);

        try {
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskYjjbntbhkhUrl)
                    .contentType("multipart/form-data")
                    .header("Authorization", headerValue)
                    .form("input_layer", input_layer)
                    .form("dltb_layer", dltb_layer)
                    .form("overlay_layer", overlay_layer)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------submitYjjbntbhwcqkDataTask------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------submitYjjbntbhwcqkDataTask msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------submitYjjbntbhwcqkDataTask------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------submitYjjbntbhwcqkDataTask----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String submitGdbhwcqkDataTask(String dataId, String outDataId, String headerValue) {
        com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
        input_layer.put("type", "dataItem");
        input_layer.put("value", dataId);

        com.alibaba.fastjson2.JSONObject overlay_layer = new com.alibaba.fastjson2.JSONObject();
        overlay_layer.put("type", "dataItem");
        overlay_layer.put("value", outDataId);
        try {
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskGdbhkhUrl)
                    .contentType("multipart/form-data")
                    .header("Authorization", headerValue)
                    .form("input_layer", input_layer)
                    .form("overlay_layer", overlay_layer)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------submitGdbhwcqkDataTask------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------submitGdbhwcqkDataTask msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------submitGdbhwcqkDataTask------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------submitGdbhwcqkDataTask----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String submitGdLrLcDataTask(String dataId, String lastYearDataId, String headerValue) {
        LOG.info("-----------------submitGdLrLcDataTask");
        com.alibaba.fastjson2.JSONObject input_layer = new com.alibaba.fastjson2.JSONObject();
        input_layer.put("type", "dataItem");
        input_layer.put("value", dataId);
        LOG.info("----------input_layer");
        LOG.info(input_layer.toString());
        com.alibaba.fastjson2.JSONObject input_last_year_layer = new com.alibaba.fastjson2.JSONObject();
        input_last_year_layer.put("type", "dataItem");
        input_last_year_layer.put("value", lastYearDataId);
        LOG.info("----------input_last_year_layer");
        LOG.info(input_last_year_layer.toString());
        try {
            LOG.info(GAPlusConfig.taskLcLrUrl);
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskLcLrUrl)
                    .contentType("multipart/form-data")
                    .header("Authorization", headerValue)
                    .form("input_layer", input_layer)
                    .form("input_last_year_layer", input_last_year_layer)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------submitGdLrLcDataTask------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------submitGdLrLcDataTask msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------submitGdLrLcDataTask------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------submitGdLrLcDataTask----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

   
    private List<GAPlusDataCatalogVO> getDatabaseDataByDatabaseCatalogId(String sourceId, String headerValue){
        String url = GAPlusConfig.queryDataUrl + sourceId;
        try {
            HttpResponse tokenResponse = HttpUtil.createGet(url)
                    .contentType("application/x-www-form-urlencoded")
                    .header("Authorization", headerValue)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    List<GAPlusDataCatalogVO> vos = new ArrayList<>();
                    JSONArray data = jsonObject.getJSONArray("data");
                    int size = data.size();
                    for(int i = 0; i < size; i++){
                        JSONObject object = data.getJSONObject(i);
                        String sourceStatus = object.getStr("sourceStatus");
                        if(StringUtils.isBlank(sourceStatus)){
                            LOG.info("sourceStatus is null");
                            continue;
                        }
                        if(!"available".equals(sourceStatus)){
                            LOG.info("sourceStatus is not available");
                            continue;
                        }
                        Boolean deleted = object.getBool("deleted");
                        if(deleted == null){
                            LOG.info("not have deleted...");
                            continue;
                        }
                        if(deleted){
                            continue;
                        }

                        String name = object.getStr("name");
                        String id = object.getStr("id");
                        if(StringUtils.isNotBlank(name) && StringUtils.isNotBlank(id)){
                            vos.add(new GAPlusDataCatalogVO(name, id, true));
                        }
                    }
                    return vos;
                }else {
                    LOG.error("-----------------getDatabaseDataByDatabaseCatalogId msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------getDatabaseDataByDatabaseCatalogId------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------getDatabaseDataByDatabaseCatalogId- error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    
    private List<GAPlusDataCatalogVO> getDatabaseCatalog(String headerValue){
        try {
            HttpResponse tokenResponse = HttpUtil.createGet(GAPlusConfig.queryDatabaseDataUrl)
                    .contentType("application/x-www-form-urlencoded")
                    .header("Authorization", headerValue)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    List<GAPlusDataCatalogVO> vos = new ArrayList<>();
                    JSONArray data = jsonObject.getJSONArray("data");
                    int size = data.size();
                    for(int i = 0; i < size; i++){
                        JSONObject object = data.getJSONObject(i);
                        String name = object.getStr("name");
                        String id = object.getStr("id");
                        if(StringUtils.isNotBlank(name) && StringUtils.isNotBlank(id)){
                            vos.add(new GAPlusDataCatalogVO(name, id, false));
                        }
                    }
                    return vos;
                }else {
                    LOG.error("-----------------getDatabaseCatalog msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------getDatabaseCatalog------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------getDatabaseCatalog- error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

   
    private String doSubmitTaskAddData(String filePath, String id, String headerValue){
        try {
            HttpResponse tokenResponse = HttpUtil.createPost(GAPlusConfig.taskSubmitAddDataUrl)
                    .contentType("application/x-www-form-urlencoded")
                    .header("Authorization", headerValue)
                    .form("expression", "\"" + id + "\"")
                    .form("file_path", filePath)
                    .execute();
            int status = tokenResponse.getStatus();
            if (200 == status) {
                String body = tokenResponse.body();
//                Map<String, Object> tokenMap = JSONUtil.toBean(body, Map.class);
                JSONObject jsonObject = JSONUtil.parseObj(body);
                if(jsonObject.containsKey("data")){
                    JSONObject data = jsonObject.getJSONObject("data");
                    if(data != null && data.containsKey("id")){
                        return data.getStr("id");
                    }
                    LOG.info("-------doSubmitTaskAddData------ " + jsonObject.toString());
                }else {
                    LOG.error("-----------------doSubmitTaskAddData msg: " + jsonObject.toString());
                }
            }else {
                LOG.info("--------doSubmitTaskAddData------status is " + status);
                LOG.info(tokenResponse.body());
            }
        }catch (Exception e){
            LOG.error("---------doSubmitTaskAddData----submitTask error..." + e.getMessage());
            e.printStackTrace();
        }
        return null;
    }


}