「java手机发送验证码」java给手机发送验证码

博主:adminadmin 2022-12-05 00:36:09 55

今天给各位分享java手机发送验证码的知识,其中也会对java给手机发送验证码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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

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, MapString, String params) { //构造HttpClient的实例 HttpClient httpClient = new HttpClient(); //创建POST方法的实例 PostMethod postMethod = new PostMethod(url); //设置请求头信息 postMethod.setRequestHeader("Connection", "close"); //添加参数 for (Map.EntryString, 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, MapString, 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提交地址"; MapString, String params = new HashMapString, 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编码。

给手机号发送验证码

建一个utlls

package com.itjh.util;

import org.apache.commons.httpclient.Header;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.PostMethod;

import java.util.Random;

public class SendMessageUtil {

private static final StringSMS_Url ="";

/**

    * @param Uid SMS用户id  : lvfang123

    * @param Key 接口秘钥:SMS登录可查(非登录密码)

    * @param sendPhoneNum 短信发送目标号码

    * @param desc 短信内容

    * @return Integer(1:成功码,其他失败,具体参见注释)

*/

    public static Integersend(String Uid,String Key,String sendPhoneNum,String desc){

HttpClient client =new HttpClient();

PostMethod post =new PostMethod(SMS_Url);

post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");// 在头文件中设置转码

        //设置参数

        NameValuePair[]data = {

new NameValuePair("Uid", Uid),

new NameValuePair("Key", Key),//秘钥

                new NameValuePair("smsMob", sendPhoneNum),

new NameValuePair("smsText", desc)

};

post.setRequestBody(data);

try {

client.executeMethod(post);

}catch (Exception e) {  e.printStackTrace();  }

Header[]headers =post.getResponseHeaders();

int statusCode =post.getStatusCode();

System.out.println("statusCode:" +statusCode);

for (Header h :headers) {

System.out.println(h.toString());

}

String result ="";

try {

result =new String(post.getResponseBodyAsString().getBytes("gbk"));

}catch (Exception e) {  e.printStackTrace();  }

post.releaseConnection();

return Integer.parseInt(result);

}

/**

    *  -1  没有该用户账户

    -2 接口密钥不正确 [查看密钥]不是账户登陆密码

    -21    MD5接口密钥加密不正确

    -3 短信数量不足

    -11    该用户被禁用

    -14    短信内容出现非法字符

    -4 手机号格式不正确

    -41    手机号码为空

    -42    短信内容为空

    -51    短信签名格式不正确接口签名格式为:【签名内容】

    -6 IP限制

    大于0    短信发送数量

以上作为补充

    */

    public static StringgetMessage(Integer code){

Stringmessage;

if(code 0 ) {

message ="SMS-f发送成功!短信量还有" + code +"条";

}else if(code == -1){

message ="SMS-没有该用户账户";

}else if(code == -2){

message ="SMS-接口密钥不正确";

}else if(code == -21){

message ="SMS-MD5接口密钥加密不正确";

}else if(code == -3){

message ="SMS-短信数量不足";

}else if(code == -11){

message ="SMS-该用户被禁用";

}else if(code == -14){

message ="SMS-短信内容出现非法字符";

}else if(code == -4){

message ="SMS-手机号格式不正确";

}else if(code == -41){

message ="SMS-手机号码为空";

}else if(code == -42){

message ="SMS-短信内容为空";

}else if(code == -51){

message ="SMS-短信签名格式不正确接口签名格式为:【签名内容】";

}else if(code == -6){

message ="SMS-IP限制";

}else{

message ="其他错误";

}

return message;

}

/**

    * 随机生成6位验证码

    * @return

*/

    public static StringgetRandomCode(Integer code){

Randomrandom =new Random();

StringBufferresult=new StringBuffer();

for (int i=0;i

result.append(random.nextInt(10));

}

return result.toString();

}

public static StringgetRandomCode(){

Randomrandom =new Random();

String result="";

for (int i=0;i6;i++){

result+=random.nextInt(10);

}

return result;

}

public void testSendMessage(){

//        SendMessageUtil.send("SMS账户","接口秘钥","目标号码","发送内容");

//第一个名称,密钥,手机号

        SendMessageUtil.send("jimingyu","d41d8cd98f00b204e980","15226921418","验证码:"+getRandomCode(6));

IntegerresultCode =1;

System.out.println(SendMessageUtil.getMessage(resultCode));

}

}

配置文件pom.xml

commons-logging

commons-logging

1.1.1

commons-codec

commons-codec

1.4

commons-httpclient

commons-httpclient

3.0.1

获取发送短信密钥网址

Java编程验证码发送到手机

%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %

%!

Color getRandColor(int fc,int bc){//给定范围获得随机颜色

Random random = new Random();

if(fc255) fc=255;

if(bc255) bc=255;

int r=fc+random.nextInt(bc-fc);

int g=fc+random.nextInt(bc-fc);

int b=fc+random.nextInt(bc-fc);

return new Color(r,g,b);

}

%

%

//设置页面不缓存

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires", 0);

// 在内存中创建图象

int width=60, height=20;

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// 获取图形上下文

Graphics g = image.getGraphics();

//生成随机类

Random random = new Random();

// 设定背景色

g.setColor(getRandColor(200,250));

g.fillRect(0, 0, width, height);

//设定字体

g.setFont(new Font("Times New Roman",Font.PLAIN,18));

//画边框

//g.setColor(new Color());

//g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(getRandColor(160,200));

for (int i=0;i155;i++)

{

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(12);

int yl = random.nextInt(12);

g.drawLine(x,y,x+xl,y+yl);

}

// 取随机产生的认证码(4位数字)

//String rand = request.getParameter("rand");

//rand = rand.substring(0,rand.indexOf("."));

String sRand="";

for (int i=0;i4;i++){

String rand=String.valueOf(random.nextInt(10));

sRand+=rand;

// 将认证码显示到图象中

g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

g.drawString(rand,13*i+6,16);

}

// 将认证码存入SESSION

session.setAttribute("ccode",sRand);

// 图象生效

g.dispose();

// 输出图象到页面

ImageIO.write(image, "JPEG", response.getOutputStream());

%

使用java发送短信验证码码,出现流量限制怎么办?急

短信验证码没有什么流量限制的,唯一可能的原因就是3点

1.短信接口欠费被限制了

2.你使用的个人手机号频频繁发短信会被运营商限制

3.你的接口被恶意请求,人家给你限制了

这些问题都只能找平台解决

Java短信验证码功能怎么实现?

实现jiava短信验证码可以按下面的步奏进行:

1、首先,找到一个支持Java语言的接口短信平台。

2、接着下载接口文档,和自己的开发平台进行对接。

3、注意在对接之前测试一下短信的速度,一旦对接好想换就比较麻烦,之前就吃过这个亏,最后有个朋友介绍我去短信网。

4、如果要购买的话,一定要多测试几家。

如果在碰到有疑问的地方一定要和技术或者客服多多沟通。

java短信验证码如何验证

先创建一个验证码,通过短信代理发送到用户指定的手机,待用户提交后做对比,看验证码是否一致。

整体流程:

用户输入手机号码,点击获取验证码

服务器创建验证码,并通过短信代理商发送到用户手机

用户查看验证码,输入提交

服务器进行确认,反馈成功或者失败。

java手机发送验证码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java给手机发送验证码、java手机发送验证码的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-05,除非注明,否则均为首码项目网原创文章,转载请注明出处。