Java接小程序消息通知
简介
小程序的消息通知功能使得开发者可以向用户发送模板消息、客服消息等。本文将介绍如何使用Java语言接入小程序的消息通知功能,并提供相关代码示例。
准备工作
在开始之前,需要进行一些准备工作:
- 在小程序后台中,开通消息推送服务,并获取到小程序的AppID和AppSecret。
- 使用Java开发环境,确保已经配置好相关依赖。
获取Access Token
在使用小程序的消息通知功能之前,需要先获取到Access Token。Access Token是小程序与微信服务器之间的通信凭证,每个Access Token的有效期为2小时。
以下是获取Access Token的代码示例:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class AccessTokenUtil {
private static final String ACCESS_TOKEN_URL = "
private static final String APP_ID = "your_app_id";
private static final String APP_SECRET = "your_app_secret";
public static String getAccessToken() throws Exception {
String url = ACCESS_TOKEN_URL + "?grant_type=client_credential&appid=" + APP_ID + "&secret=" + APP_SECRET;
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 解析返回的JSON数据
Map<String, Object> json = new Gson().fromJson(response.toString(), HashMap.class);
String accessToken = (String) json.get("access_token");
return accessToken;
}
}
在上述代码中,需要将your_app_id
和your_app_secret
替换为实际的AppID和AppSecret。
发送模板消息
接下来,我们将通过Java代码发送模板消息给用户。模板消息是小程序中的一种消息形式,可以包含固定的模板格式和动态的内容。
以下是发送模板消息的代码示例:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class TemplateMessageUtil {
private static final String SEND_TEMPLATE_MESSAGE_URL = "
private static final String TEMPLATE_ID = "your_template_id";
private static final String OPEN_ID = "user_open_id";
public static void sendTemplateMessage(String accessToken, String message) throws Exception {
String url = SEND_TEMPLATE_MESSAGE_URL + accessToken;
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
// 构建消息体
Map<String, Object> data = new HashMap<>();
data.put("touser", OPEN_ID);
data.put("template_id", TEMPLATE_ID);
data.put("data", message);
OutputStream os = con.getOutputStream();
os.write(new Gson().toJson(data).getBytes());
os.flush();
os.close();
int responseCode = con.getResponseCode();
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());
}
}
在上述代码中,需要将your_template_id
替换为实际的模板ID,user_open_id
替换为用户的OpenID。另外,message
为要发送的消息内容。
示例
现在,我们来演示一下完整的流程,包括获取Access Token和发送模板消息。
public class Main {
public static void main(String[] args) {
try {
// 获取Access Token
String accessToken = AccessTokenUtil.getAccessToken();
// 发送模板消息
String message = "{\"name\":{\"value\":\"John\"},\"age\":{\"value\":\"25\"}}";
TemplateMessageUtil.sendTemplateMessage(accessToken, message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在示例代码中,我们通过调用AccessTokenUtil.getAccessToken()
方法获取Access Token,然后将Access Token和消息内容作为参数传递给TemplateMessageUtil.sendTemplateMessage()
方法,即可发送模板消息