Java是企业后端主力语言。在Spring Boot等服务中接入互亿无线预警通知接口,可在业务异常、监控告警、定时任务失败时自动下发短信或语音。本文给出基于HttpURLConnection的示例,不依赖第三方库。 Java接入的接口地址与…
Java是企业后端主力语言。在Spring Boot等服务中接入互亿无线预警通知接口,可在业务异常、监控告警、定时任务失败时自动下发短信或语音。本文给出基于HttpURLConnection的示例,不依赖第三方库。
Java接入的接口地址与参数
短信接口 https://api.ihuyi.com/sms/Submit.json ,语音接口 https://api.ihuyi.com/voice/vm ,闪信接口 https://api.ihuyi.com/flash/Submit.json 。三者参数一致,可配置切换通道。
- account=APIID,password=APIKEY;
- mobile=接收手机号,content=通知内容;
- 模板变量方式需额外传templateid。
Java发送语音告警代码示例
下面工具类向语音接口POST,content为TTS文本:
public class NotifyClient {
public static String sendVoice(String mobile, String content) throws Exception {
String url = "https://api.ihuyi.com/voice/vm";
String body = "account=APIID&password=APIKEY"
+ "&mobile=" + URLEncoder.encode(mobile, "UTF-8")
+ "&content=" + URLEncoder.encode(content, "UTF-8");
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.getOutputStream().write(body.getBytes("UTF-8"));
return new String(conn.getInputStream().readAllBytes(), "UTF-8");
} // code=2为提交成功
}
Java接入注意事项
- content含中文与特殊字符时务必URL编码;
- 设置连接与读取超时,防止拖垮业务线程池;
- APIID与APIKEY放配置中心,不要写死在源码;
- 返回code=2才算成功,失败记录日志并重试。
带超时与异常处理的完整示例
下面用Java 11内置的HttpClient发送POST请求,无需额外引入HTTP客户端库,适合直接放进Spring Boot或普通Java后端:
public static String sendSms(String mobile, String content) throws Exception {
String body = "account=" + enc(System.getenv("IHUYI_APIID"))
+ "&password=" + enc(System.getenv("IHUYI_APIKEY"))
+ "&mobile=" + enc(mobile) + "&content=" + enc(content);
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10)).build();
HttpRequest req = HttpRequest.newBuilder(URI.create(URL))
.timeout(Duration.ofSeconds(10))
.POST(HttpRequest.BodyPublishers.ofString(body)).build();
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
return resp.body(); // code=2为提交成功
}
依赖与运行说明
java.net.http从Java 11开始内置,JDK 11以上无需额外依赖。JDK 8可改用HttpURLConnection或OkHttp,参数拼装方式一致。密钥从环境变量读取,不要写死在代码里。
常见报错排查
- ConnectException或SocketTimeout:确认服务器出网HTTPS通畅,必要时配置代理;
- 返回code非2:打印resp.body(),根据msg判断是认证、手机号还是模板问题;
- 语音场景把URL换成 https://api.ihuyi.com/voice/vm ,参数相同。
封装告警工具类,业务异常即可自动通知。前往注册免费试用获取密钥。