cn.net.wanmo.common.send.HttpApacheSender Maven / Gradle / Ivy
package cn.net.wanmo.common.send;
import cn.net.wanmo.common.http.apache.HttpApacheResult;
import cn.net.wanmo.common.http.apache.HttpApacheUtil;
import cn.net.wanmo.common.http.jdk.HttpJdkUtil;
import cn.net.wanmo.common.http.jdk.pojo.ResData;
import cn.net.wanmo.common.result.HttpResult;
import cn.net.wanmo.common.util.DateUtil;
import cn.net.wanmo.common.util.MapUtil;
import cn.net.wanmo.common.util.ObjectUtil;
import cn.net.wanmo.common.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.Objects;
public class HttpApacheSender {
private static final Logger logger = LoggerFactory.getLogger(HttpJdkSender.class);
public static ResObj get(String title, String url, ReqObj req, ResObj res) {
logger.debug(title + "接口URL:{}", url);
logger.debug(title + "接口请求头:{}", req.getHeaders());
HttpApacheResult apacheResult = HttpApacheUtil.get(url)
.header(req.getHeaders())
.execute(req.isDownload());
return exec(title, apacheResult, req, res);
}
public static ResObj post(String title, String url, ReqObj req, ResObj res) {
logger.debug(title + " 接口URL:{}", url);
logger.debug(title + " 接口请求头:{}", req.getHeaders());
logger.debug(title + " 接口请求参数:{}", req.getParams());
logger.debug(title + " 接口请求体:{}", req.getBody());
HttpApacheUtil apacheUtil = HttpApacheUtil.post(url)
.header(req.getHeaders());
Map params = req.getParams();
if (MapUtil.isNotEmpty(params)) {
for (Map.Entry entry : params.entrySet()) {
apacheUtil.form(entry.getKey(), entry.getValue());
}
}
BaseReq.ReqFile reqFile = req.getFile();
if (Objects.nonNull(reqFile)) {
apacheUtil.form(reqFile.getName(), reqFile.getFile(), reqFile.getFilename());
}
if (StringUtil.isNotBlank(req.getBody())) {
apacheUtil.body(req.getBody());
}
HttpApacheResult apacheResult = apacheUtil.execute(req.isDownload());
return exec(title, apacheResult, req, res);
}
private static ResObj exec(String title, HttpApacheResult httpResult, ReqObj req, ResObj res) {
try {
res.setErrCode(ObjectUtil.cast(httpResult.getStatusCode()));
res.setErrMsg(httpResult.getMessage());
res.setSuccessHttp(httpResult.isOk());
if (httpResult.isOk()) {
logger.debug(title + " 接口响应头:{}", httpResult.headers());
logger.debug(title + " 接口响应体:{}", httpResult.body());
res.setHeaders(httpResult.headers());
res.setBody(httpResult.body());
if (res.isSuccessData()) { // 接口响应成功数据
logger.debug(title + " 接口成功:{}", res.toJSONString());
} else { // 接口响应失败数据
logger.warn(title + " 接口失败:{}", res.toJSONString());
}
} else {
logger.warn(title + " 接口HTTP失败:{} {}", res.getErrCode(), res.getErrMsg());
}
} catch (Exception e) {
res.setErrCode(ObjectUtil.cast(500));
res.setErrMsg(title + " 接口HTTP异常");
logger.error(res.getErrMsg(), e);
} finally {
res.setResTime(DateUtil.nowLong()); // 设置响应时间
res.setConsumeTime(res.getResTime() - req.getReqTime()); // 计算耗时
}
return res;
}
}