java后端发送get和post两种请求与定时器

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;
	}
	
}

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用HttpURLConnection或者HttpClient来发送get和post请求到微信接口。以下是示例代码: 使用HttpURLConnection发送get请求: ```java URL url = new URL("https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("GET request failed, response code: " + responseCode); } ``` 使用HttpURLConnection发送post请求: ```java String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN"; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); // 设置post请求参数 String urlParameters = "json data..."; con.setDoOutput(true); DataOutputStream wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); int responseCode = con.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("POST request failed, response code: " + responseCode); } ``` 使用HttpClient发送get请求: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID"); CloseableHttpResponse response = httpClient.execute(httpGet); try { HttpEntity entity = response.getEntity(); String responseBody = EntityUtils.toString(entity, "UTF-8"); EntityUtils.consume(entity); System.out.println(responseBody); } finally { response.close(); } ``` 使用HttpClient发送post请求: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN"); // 设置post请求参数 StringEntity entity = new StringEntity("json data...", ContentType.APPLICATION_JSON); httpPost.setEntity(entity); CloseableHttpResponse response = httpClient.execute(httpPost); try { HttpEntity responseEntity = response.getEntity(); String responseBody = EntityUtils.toString(responseEntity, "UTF-8"); EntityUtils.consume(responseEntity); System.out.println(responseBody); } finally { response.close(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值