问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java如何实现发送短信验证码功能?

发布网友 发布时间:2022-04-21 05:23

我来回答

2个回答

热心网友 时间:2023-11-05 23:34

1、创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法

/** * 文件说明 * @Description:扩展说明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.io.IOException;import java.util.Map; import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.SimpleHttpConnectionManager;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @Version:V6.0 */public class HttpRequestUtil { /** * HttpClient 模拟POST请求 * 方法说明 * @Discription:扩展说明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String postRequest(String url, Map<String, String> params) { //构造HttpClient的实例 HttpClient httpClient = new HttpClient(); //创建POST方法的实例 PostMethod postMethod = new PostMethod(url); //设置请求头信息 postMethod.setRequestHeader("Connection", "close"); //添加参数 for (Map.Entry<String, String> entry : params.entrySet()) { postMethod.addParameter(entry.getKey(), entry.getValue()); } //使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次 httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false); //接收处理结果 String result = null; try { //执行Http Post请求 httpClient.executeMethod(postMethod); //返回处理结果 result = postMethod.getResponseBodyAsString(); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("请检查输入的URL!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 System.out.println("发生网络异常!"); e.printStackTrace(); } finally { //释放链接 postMethod.releaseConnection(); //关闭HttpClient实例 if (httpClient != null) { ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); httpClient = null; } } return result; } /** * HttpClient 模拟GET请求 * 方法说明 * @Discription:扩展说明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String getRequest(String url, Map<String, String> params) { //构造HttpClient实例 HttpClient client = new HttpClient(); //拼接参数 String paramStr = ""; for (String key : params.keySet()) { paramStr = paramStr + "&" + key + "=" + params.get(key); } paramStr = paramStr.substring(1); //创建GET方法的实例 GetMethod method = new GetMethod(url + "?" + paramStr); //接收返回结果 String result = null; try { //执行HTTP GET方法请求 client.executeMethod(method); //返回处理结果 result = method.getResponseBodyAsString(); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("请检查输入的URL!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 System.out.println("发生网络异常!"); e.printStackTrace(); } finally { //释放链接 method.releaseConnection(); //关闭HttpClient实例 if (client != null) { ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); client = null; } } return result; }}

2、在创建一个类,生成验证码,然后传递相应的参数(不同的短信平台接口会有不同的参数要求,这个一般短信平台提供的接口文档中都会有的,直接看文档然后按要求来即可)

/** * 文件说明 * @Description:扩展说明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.net.URLEncoder;import java.util.HashMap;import java.util.Map; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @Version:V6.0 */public class SendMsgUtil { /** * 发送短信消息 * 方法说明 * @Discription:扩展说明 * @param phones * @param content * @return * @return String * @Author: feizi * @Date: 2015年4月17日 下午7:18:08 * @ModifyUser:feizi * @ModifyDate: 2015年4月17日 下午7:18:08 */ @SuppressWarnings("deprecation") public static String sendMsg(String phones,String content){ //短信接口URL提交地址 String url = "短信接口URL提交地址"; Map<String, String> params = new HashMap<String, String>(); params.put("zh", "用户账号"); params.put("mm", "用户密码"); params.put("dxlbid", "短信类别编号"); params.put("extno", "扩展编号"); //手机号码,多个号码使用英文逗号进行分割 params.put("hm", phones); //将短信内容进行URLEncoder编码 params.put("nr", URLEncoder.encode(content)); return HttpRequestUtil.getRequest(url, params); } /** * 随机生成6位随机验证码 * 方法说明 * @Discription:扩展说明 * @return * @return String * @Author: feizi * @Date: 2015年4月17日 下午7:19:02 * @ModifyUser:feizi * @ModifyDate: 2015年4月17日 下午7:19:02 */ public static String createRandomVcode(){ //验证码 String vcode = ""; for (int i = 0; i < 6; i++) { vcode = vcode + (int)(Math.random() * 9); } return vcode; } /** * 测试 * 方法说明 * @Discription:扩展说明 * @param args * @return void * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static void main(String[] args) {// System.out.println(SendMsgUtil.createRandomVcode());// System.out.println("&ecb=12".substring(1)); System.out.println(sendMsg("18123456789,15123456789", "尊敬的用户,您的验证码为" + SendMsgUtil.createRandomVcode() + ",有效期为60秒,如有疑虑请详询XXX-XXX-XXXX【XXX中心】")); }

然后执行一下,一般的情况下参数传递正确,按照接口文档的规范来操作的话,都会发送成功的,手机都能收到验证码的,然后可能会出现的问题就是:发送的短信内容有可能会出现中文乱码,然后就会发送不成功,按照短信平台的要求进行相应的编码即可。一般都会是UTF-8编码。

热心网友 时间:2023-11-05 23:34

你用JAVA开放的平台需要有短信接口,和短信群发平台公司对接短信实现触发自动下发验证码短信的功能,开户对接好,准备好足够短信条数就可以了,正规短信群发平台都会提供免费的对接文档给你对接,你做技术一看就明白的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
泌尿系结核肾结核有哪些特点 肾结核治好影响寿命吗 邢台七路公交车2020年一月二十九号通车吗? 笔记本的USB有线网卡上不了网,试了公司的台式机(是路由器的),店家的... 喝多给特别喜欢的男生打电话骂他,他也不生气,是不在意吗 为什么我的QQ绑定不起手机为什么说我本次操作存在风? 内账应收应付怎么对账 应收应付应该如何对账 深圳弗林棕旅行社有限公司怎么样? 深圳市鹏运国际旅行社有限公司怎么样? 用java实现:随机获取4位的验证码 java发送短信验证码需要加入消息队列吗? java中发送短信验证码怎么实现的 java在做银联接口的时候支付收不到短信验证码 java怎么实现向手机发送验证码 使用java发送短信验证码码,出现流量限制怎么办?急 复杂验证码自动识别 java开发 java面试(1)如何防止恶意攻击短信验证码接口 java短信验证接口可以显示验证码,但是发不到手机上,怎么回事 日语初级上作文[能力有限,帮忙修改下,通顺点,可以适当添加,写得好一点] 谢谢大家了!!!! Java客户端调用Webservice接口实现获取手机验证码 java短信接口如何实现短信验证码 404 Not Found 404 Not Found 《斛珠夫人》这部剧的风评如何? 404 Not Found 《斛珠夫人》这部剧有哪些看点和槽点? 斛珠夫人上映时间 《斛珠夫人》开播以来褒贬不一,这部剧有哪些看点? 《斛珠夫人》正在热播,这部剧的评分如何? 怎么在java中直接得到google authenticator 的6位的验证码,而不用第三方app来实现 婚前财产可以办理抵押吗 javaweb开发怎么防止机器攻击一直刷短信验证码 民法典婚前财产一个人能办抵押吗 婚前财产抵押和另一半有关吗 婚前财产一个人能办抵押吗 婚前财产抵押的债务怎么处理 婚前财产可以用作婚后资产抵押吗?如何操作? 婚前财产婚后抵押和另一半有关吗 婚前买的房子抵押贷款了还属于婚前财产吗 婚前房子是男方的,结婚后男方又把房子抵押贷款,离婚房子有女方的吗? 婚前房子抵押贷款,婚后共同还贷算夫妻共同财产吗? 婚前房产抵押贷款需要配偶签字吗? 丈夫拿婚前个人全款房拿去抵押用于经营公司的经营贷 算夫妻共同财产吗? 房产证上写单独所有是什么意思 嵌入式系统的定义是什么?有哪三个基本要素 和台式机、笔记本对比,嵌入式系统有哪些特征 嵌入式Linux系统需要哪些基本元素?分别是什么呢? 嵌入式实时操作系统由哪几部分组成基本内核包括哪些功能模块 简述嵌入式系统