package com.jty.configurationtask.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.JtyLogger;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @Title: <p>GetDataFromConfigurationCenterUtil</p>
* @Description: <p>调用外部接口工具类</p>
* @author:
* @Date: 2019/8/13 15:15
* @version: 1.0
* @Copyright: . All rights reserved.
*/
public class GetDataFromConfigurationCenterUtil {
private static JtyLogger logger = JtyLogger.getLogger(GetDataFromConfigurationCenterUtil.class, "调用外部接口工具类");
/**
* 成功返回代码
*/
private static final String SUCCESS_CODE = "0";
/**
* 成功返回消息
*/
private static final String SUCCESS_MSG = "success";
/**
* @Title: <p>getObjectBySendPostReqs</p>
* @Description: <p>向外部接口发送POST请求,返回的数据为单个数据</p>
* @param url 请求的url
* @param reqObj 请求参数对象
* @param valueType 返回值映射类型
* @param outSideInterfaceName 外部接口中文名称
* @return: T
* @author:
* @Date: 2019/8/13 15:52
* @throws
* @version: 1.0
* @Copyright: . All rights reserved.
*/
public static <T> T getObjectBySendPostReqs(String url, Object reqObj, Class<T> valueType,String outSideInterfaceName) {
/**
* 1.入参日志
*/
logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]入参:url=" + url + ",reqObj:" + reqObj
+ ",valueType=" + valueType + ",outSideInterfaceName" + outSideInterfaceName);
/**
* 2.校验
*/
if (StringUtils.isBlank(url)) {
logger.error("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]入参URL为空!参数异常!直接返回null");
return null;
}
/**
* 4.开始请求
*/
try {
HttpResponse<String> response = Unirest.post(url)
.header("accept", "application/json;charset=UTF-8")
.field("param", JSON.toJSONString(reqObj))
.asString();
/**
* 5.返回值校验
*/
if (null == response) {
logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqObj);
return null;
}
JSONObject result = JSONObject.parseObject(response.getBody());
if (null == result) {
logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqObj);
return null;
}
logger.info("从【" + outSideInterfaceName + "】获取到的数据为:" + result);
/**
* 6.返回值解析
*/
String code = result.getString("code");
String msg = result.getString("msg");
String data = result.getString("data");
if (Objects.equals(code, SUCCESS_CODE) && Objects.equals(msg, SUCCESS_MSG)) {
T object = JSONObject.parseObject(result.toString(), valueType);
/**
* 7.出参日志
*/
logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]出参:=" + object + "数据data=" + data);
/**
* 8.数据返回
*/
return object;
}
} catch (Exception e) {
/**
* 8.异常捕捉
*/
logger.error("从【" + outSideInterfaceName + "】获取数据错误:", e);
}
return null;
}
/**
* @Title: <p>getListBySendPostReqs</p>
* @Description: <p>向外部接口发送POST请求,返回的数据为多条数据list</p>
* @param url 请求的url
* @param reqMap 请求参数集合
* @param valueType 返回值映射类型
* @param outSideInterfaceName 外部接口中文名称
* @return: java.util.List<T>
* @author:
* @Date: 2019/8/13 15:53
* @throws
* @version: 1.0
* @Copyright: . All rights reserved.
*/
public static <T> List<T> getListBySendPostReqs(String url, Map<String, Object> reqMap, Class<T> valueType,String outSideInterfaceName) {
/**
* 1.入参日志
*/
logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为多条数据]入参:url=" + url + ",reqMap:" + reqMap.entrySet().toString()
+ ",valueType=" + valueType + ",outSideInterfaceName" + outSideInterfaceName);
/**
* 2.校验
*/
if (StringUtils.isBlank(url)) {
logger.error("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为多条数据]入参URL为空!参数异常!直接返回null");
return null;
}
/**
* 4.开始请求
*/
try {
HttpResponse<String> response = Unirest.post(url)
.header("accept", "application/json")
.fields(reqMap)
.asString();
/**
* 5.返回值校验
*/
if (null == response) {
logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqMap);
return null;
}
JSONObject result = JSONObject.parseObject(response.getBody()).getJSONObject("reply").getJSONObject("result");
if (null == result) {
logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqMap);
return null;
}
logger.info("从【" + outSideInterfaceName + "】获取到的数据为:" + result);
/**
* 6.返回值解析
*/
Integer code = result.getInteger("code");
Boolean res = result.getBooleanValue("res");
String r = result.getString("r");
if (Objects.equals(code, 0) && res && null != r) {
List<T> list = JSONObject.parseArray(r, valueType);
/**
* 7.出参日志
*/
logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]出参:=" + list);
/**
* 8.数据返回
*/
return list;
}
} catch (Exception e) {
/**
* 9.异常捕捉
*/
logger.error("从【" + outSideInterfaceName + "】获取数据错误:", e);
}
return null;
}
}
如何通过http请求调用外部接口工具类(POST/GET)
猜你喜欢
转载自blog.csdn.net/u012045045/article/details/102524932
今日推荐
周排行