调用的工具类接口
import com.alibaba.fastjson.JSON;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.Charset;
import java.util.Map;
public class HttpUtil {
private static final Logger log = LoggerFactory.getLogger(HttpUtil.class);
/**
* 电控调用
* @param url
* @param map
* @param charset
* @param token
* @return
*/
public static String doPost(String url, Map<String, Object> map, String charset,String token) {
log.info("开始调用工具类------->");
log.info("开始调用工具类参数---->:url={},map={},token={}", url, map, token);
HttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try {
httpClient = HttpClients.createDefault();
httpPost = new HttpPost(url);
//设置请求头参数
httpPost.setHeader("Content-type", "application/json; charset=utf-8");
//token 根据接口参数来
httpPost.setHeader("X-Token", token);
//设置参数
StringEntity entity = new StringEntity(JSON.toJSONString(map), Charset.forName("UTF-8"));
entity.setContentType("application/json");
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, charset);
}
}
} catch (Exception ex) {
ex.printStackTrace();
log.error("调用接口失败---->"+ ex.getMessage());
}finally {
log.info("开始调用工具类失败finally--->");
}
log.info("结束调用工具类---->");
return result;
}
}
调用接口
@Value("${url}")
private String url;
@Value("${xToken}")
private String xToken;
public void test() {
Map<String, Object> map = new TreeMap<>();
map.put("sn", "123");
map.put("ver", "1");
map.put("type", "1");//1查询2充值
Info info= new Info();
info.setElec(123);
map.put("params", info);
String result= HttpUtils.doPostByEle(url, map,"UTF-8",xToken);
if(StringUtils.isNotBlank(result)){
RData rtn = JSON.parseObject(result, RData.class);//根据返回的 参数可封装数据
if(rtn .getCode().equals("200")){
//数据操作
}
}
}
参数中可封装实体对象用以传参
public class Info {
private int elec;
private String name;
public int getElec() {
return elec;
}
public void setElec(int elec) {
this.elec = elec;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
注意 实体类 不能继承其他类 (部署到线上,会调用失败)