Java调用微信公众号群发接口
微信公众号是目前非常受欢迎的社交媒体平台之一,许多企业和个人都通过微信公众号来传播信息和与用户互动。其中,群发接口是一项重要功能,允许公众号管理员向关注者群发消息。
本文将介绍如何使用Java调用微信公众号群发接口,并提供相应的代码示例。
准备工作
在开始之前,需要完成以下准备工作:
- 获取微信公众号的开发者账号,包括AppID和AppSecret。
- 在微信公众平台中配置服务器,获取接口调用凭证。
调用群发接口
Java调用微信公众号群发接口的核心步骤如下:
- 获取接口调用凭证(access_token)。
- 构造群发消息的JSON数据。
- 调用群发接口发送消息。
1. 获取接口调用凭证
首先,我们需要通过微信公众平台提供的API获取接口调用凭证(access_token)。access_token是访问微信公众平台接口的唯一凭证,有效期为2小时。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class AccessTokenUtil {
private static final String ACCESS_TOKEN_URL = "
public static String getAccessToken(String appId, String appSecret) throws IOException {
String url = ACCESS_TOKEN_URL.replace("APPID", appId).replace("APPSECRET", appSecret);
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) { // 请求成功
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
} else {
throw new IOException("获取access_token失败。");
}
}
}
2. 构造群发消息的JSON数据
在调用群发接口之前,需要构造符合微信公众号接口要求的JSON数据,包括接收者、消息类型和消息内容。
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class MessageUtil {
public static String buildTextMessage(String content, String[] openIds) {
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode root = objectMapper.createObjectNode();
ObjectNode filter = root.putObject("filter");
filter.put("is_to_all", false);
filter.putArray("openid").addAll(Arrays.asList(openIds));
ObjectNode text = root.putObject("text");
text.put("content", content);
root.put("msgtype", "text");
return root.toString();
}
}
3. 调用群发接口发送消息
最后,使用获取的access_token和构造的JSON数据调用群发接口发送消息。
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MessageSender {
private static final String SEND_MESSAGE_URL = "
public static void sendMessage(String accessToken, String jsonMessage) throws IOException {
String url = SEND_MESSAGE_URL.replace("ACCESS_TOKEN", accessToken);
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(jsonMessage);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) { // 请求成功
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
} else {
throw new IOException("发送群发消息失败。");
}
}
}
``