Spring使用@Scheduled注解写定时任务,调用时间设置可自行百度.apache提供HttpClient与HttpGet或HttpPost搭配使用发送get或post请求
1.定义调度时间
定义调用时间
public final static String ProjectOffEvidence = "0 50 1 * * ?";
2.controller层调用
Controller层方法
@Scheduled(cron = ProjectExceptionScheduleCron.ProjectOffEvidence)
public void ProjectOffEvidence() throws Exception {
HttpClientTool hct = new HttpClientTool("本地或者外网url");
//post请求
hct.sendPost(String.class);
//get请求
hct.sendPost(String.class);
}
3.发送请求工具类
后台发送请求工具类
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/**
* @ClassName: HttpClientTool
*/
public class HttpClientTool {
static Log log = LogFactory.getLog(HttpClientTool.class);
/**
* 访问url
*/
private String url;
private HttpClient httpClient;
private Map<String, ? extends Object> params;
private Map<String, ? extends Object> cookie;
private RequestConfig requestConfig;
public HttpClientTool(String url) {
this.url = url;
this.httpClient = HttpClients.createDefault();
}
/**
* get请求待更新
* @Title: sendGet
* @Description: TODO[]
* @param @param requestJson
* @param @return 设定文件
* @return String 返回类型
* @throws
*/
public <R>R sendGet(Class<R> clazz){
HttpGet httpGet = new HttpGet(url);
if(null != requestConfig)
httpGet.setConfig(requestConfig);
try {
HttpResponse response = this.httpClient.execute(httpGet);
return httpEntityToStr(response.getEntity(), clazz);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static final String COOKIE_KEY = "Cookie";
/**
* 发送post请求
* @Title: sendPost
* @Description: TODO[]
* @param @param requestJson
* @param @return 设定文件
* @return String 返回类型
* @throws
*/
public <R>R sendPost(Class<R> clazz){
log.debug(String.format("开始发送post请求:%s", url));
HttpPost httpPost = new HttpPost(url);
setEntity(httpPost);
if(null != cookie)
httpPost.setHeader(COOKIE_KEY, mapToStrByCookie(cookie));
if(null != requestConfig)
httpPost.setConfig(requestConfig);
try {
HttpResponse response = this.httpClient.execute(httpPost);
R obj = httpEntityToStr(response.getEntity(), clazz);
log.debug(String.format("响应返回值为:%s", JSONTools.convertObj2JsonStr(obj)));
return obj;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static final String APPLICATION_JSON = "application/json";
/*
* 获得httpEntity
*/
public void setData(HttpPost httpPost){
try {
StringEntity stringEntity = new StringEntity(objToStr(params));
stringEntity.setContentEncoding(Const.THIS_PROJECT_CHARSET);
stringEntity.setContentType(APPLICATION_JSON);
//this.httpEntity = stringEntity;
httpPost.setEntity(stringEntity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
private <R>R httpEntityToStr(HttpEntity httpEntity, Class<R> clazz){
try {
String json = EntityUtils.toString(httpEntity, Const.THIS_PROJECT_CHARSET);
if(Objects.equals(clazz, Collection.class)){
return (R) JSONTools.convertJson2Collection(json, clazz);
}else{
return (R) JSONTools.convertJson2Class(json, clazz);
}
} catch (ParseException | IOException e) {
e.printStackTrace();
return null;
}
}
private void setEntity(HttpPost httpPost){
if(params == null) return ;
List<NameValuePair> httpParam = new ArrayList<>();
for (Map.Entry<String, ? extends Object> entrys : params.entrySet()) {
Object val = entrys.getValue();
if(val instanceof CharSequence || val instanceof Number){
httpParam.add(new BasicNameValuePair(entrys.getKey(), val.toString()));
}else {
httpParam.add(new BasicNameValuePair(entrys.getKey(), JSONTools.convertObj2JsonStr(val)));
}
}
UrlEncodedFormEntity fromEntity = null;
try{
fromEntity = new UrlEncodedFormEntity(httpParam, Const.THIS_PROJECT_CHARSET);
}catch(Exception e){
e.printStackTrace();
}
httpPost.setEntity(fromEntity);
}
private String mapToStrByCookie(Map<String, ? extends Object> cookies){
StringBuilder str = new StringBuilder();
for (Map.Entry<String, ? extends Object> cookie : cookies.entrySet()) {
if(str.length() == 0){
str.append(cookie.getKey()).append('=').append(JSONTools.convertObj2JsonStr(cookie));
}else{
str.append(';').append(cookie.getKey()).append('=').append(JSONTools.convertObj2JsonStr(cookie));
}
}
return str.toString();
}
public void setCookie(Map<String, ? extends Object> cookie) {
this.cookie = cookie;
}
private String objToStr(Object obj){
return JSONTools.convertObj2JsonStr(obj);
}
public HttpClient getHttpClient() {
return httpClient;
}
public void setHttpClient(HttpClient httpClient) {
this.httpClient = httpClient;
}
public Map<String, ? extends Object> getParams() {
return params;
}
public void setParams(Map<String, ? extends Object> params) {
this.params = params;
}
public RequestConfig getRequestConfig() {
return requestConfig;
}
public void setRequestConfig(RequestConfig requestConfig) {
this.requestConfig = requestConfig;
}
}