消息推送是很常见,一般都会采用手机短信、邮件、公众号、小程序等各种接口进行实现。
我是在工作过程中需要实现一个公众号的信息推送,网上查阅过资料,其中腾讯信鸽接口很多人使用,网上教学很多,不过用户需求是要有限制条件(连接内网、指定人员且绑定信息),所以采用的是http请求来实现。
在这里我们就介绍一下有关于http请求如何实现消息推送,我也是刚开始接触,就大致说一下:
//在这里map是一个HashMap对象,是根据需求写的,然后转换为json格式
JSONObject jsonobject = new JSONObject(map);
String body = JSON.toJSONString(jsonobject);
//推送地址
String url = "http://***";
//获得Http客户端(相当于一个浏览器)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
//创建post请求
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-type","application/json;charset=utf-8");
//这里利用阿里的fastjson,将Object转换为json字符串;
//(需要导入com.alibaba.fastjson.JSON包)
//设置参数(post请求是将参数放在请求体里面传过去的)
httpPost.setEntity(new StringEntity(body, "utf-8"));
//设置超时
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000).setConnectionRequestTimeout(1000)
.setSocketTimeout(5000).build();
httpPost.setConfig(requestConfig);
//推送并获取响应
HttpResponse httpResponse = httpClient.execute(httpPost);
if(httpResponse.getStatusLine().getStatusCode() == 200){
HttpEntity httpEntity = httpResponse.getEntity();
String responseResult = EntityUtils.toString(httpEntity);
//第一种:直接获取数据方式(转换为JSONObject的字符串)
JSONObject jso1 = JSONObject.parseObject(responseResult);
String status = (String) jso1.get("status");//可以通过key获取数据,有弊端就是只能获取string,格式转换我就没去细查
//第二种:封装成对象获取(GovWebChat是一个pojo,封装着返回的数据,属性名与返回的数据名一样则会赋值即可以形成对象)
GovWebChat chat = JSONObject.parseObject(responseResult, GovWebChat.class);
String status = chat.getStatus();//通过对象获取数据
}
如果有问题可以评论,Thanks♪(・ω・)ノ