/**
* @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);
}
}
JAVA-调用HTTPPost请求公用方法笔记
最新推荐文章于 2024-01-10 09:15:10 发布