JAVA-调用HTTPPost请求公用方法笔记

/**
     * @param map requestUrl 请求地址
     *            pathName 需要上传的本地文件名
     *            dataMap 封装的请求体
     *            mediaType 请求体的格式
     *            headersMap 封装的请求体
     * @return
     */
    public static JSONObject publicRequestPostHTTMethod(Map<String, Object> map) {
        try {
            JSONObject jsonObject = new JSONObject();
            if (!map.containsKey("requestUrl")) {
                return jsonObject;
            }
            RestTemplate restTemplate = new RestTemplate();
            HttpHeaders headers = new HttpHeaders();

            //1、接口地址
            String tempMaterialUploadUrl = (String) map.get("requestUrl");

            // 2、封装请求体
            MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
            //请求体
            if (map.containsKey("dataMap")) {
                Map<String, Object> dataMap = (Map<String, Object>) map.get("dataMap");
                dataMap.forEach((k, v) -> {
                    param.add(k, v);
                });
            }
            //特殊请求体 - 封装本地文件
            if (map.containsKey("pathName")) {
                File file = new File((String) map.get("pathName"));
                FileSystemResource resource = new FileSystemResource(file);
                param.add("file", resource);
                //请求头设置
                headers.setContentLength(file.length());
                headers.setContentDispositionFormData("media", file.getName());
            }


            log.info("接口请求体为:{}", param.toString());
            // 3、封装整个请求报文
            //设置请求格式 默认application/json  文件类型需设置multipart/form-data
            headers.setContentType(MediaType.APPLICATION_JSON);
            if (map.containsKey("mediaType")) {
                headers.setContentType(MediaType.parseMediaType((String) map.get("mediaType")));
            }
            //表头设置
            if (map.containsKey("headersMap")) {
                Map<String, Object> dataMap = (Map<String, Object>) map.get("headersMap");
                dataMap.forEach((k, v) -> {
                    headers.set(k, (String) v);
                });
            }
            //将请求头与请求体进行封装
            HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(param, headers);
            log.info("接口请求报文为:{}", formEntity.toString());
            // 4、发送请求
            jsonObject = restTemplate.postForEntity(tempMaterialUploadUrl, formEntity, JSONObject.class).getBody();
            log.info("返回的数据为:{}", jsonObject);
            if (null != jsonObject && 200 == (Integer) jsonObject.get("status")) {
                log.info("HTTP请求公用接口调用返回成功");
            } else {
                log.error("HTTP请求公用接口调用返回失败");
                return null;
            }
            return jsonObject;
        } catch (Exception e) {
            log.error("HTTP请求公用接口代码报错:{}", e);
            throw new BaseException("HTTP请求公用接口代码报错" + e, e);
        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值