网易云短信验证

来源:互联网 发布:互力微信淘客软件 编辑:程序博客网 时间:2024/05/01 17:50

网易云短信验证

首先创建5个java类:

这里写图片描述

需要的jar包:
这里写图片描述

package com.ht.duanxin;/** * @author Administrator *   *  获取验证码的手机号码 */public class SendMsg {    public static void main(String[] args) {        String mobileNumber ="130******1";//获取验证码的手机号码        try {            String str = MobileMessageSend.sendMsg(mobileNumber);            if("success".equals(str)){                System.out.println("发送成功!");            }else{                System.out.println("发送失败!");            }        } catch (Exception e) {            e.printStackTrace();        }    }}
package com.ht.duanxin;import java.io.IOException;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import com.alibaba.fastjson.JSON;import com.ht.duanxin.CheckSumBuilder;public class MobileMessageSend {    private static final String SERVER_URL="https://api.netease.im/sms/sendcode.action";//发送验证码的请求路径URL    private static final String APP_KEY="*********";//账号    private static final String APP_SECRET="*********";//密钥    private static final String NONCE="123456";//随机数    private static final String MOULD_ID="3056134";//模板ID    public static String sendMsg(String phone) throws IOException {        CloseableHttpClient httpclient = HttpClients.createDefault();        HttpPost post = new HttpPost(SERVER_URL);        String curTime=String.valueOf((new Date().getTime()/1000L));        String checkSum=CheckSumBuilder.getCheckSum(APP_SECRET,NONCE,curTime);        //设置请求的header        post.addHeader("AppKey",APP_KEY);        post.addHeader("Nonce",NONCE);        post.addHeader("CurTime",curTime);        post.addHeader("CheckSum",checkSum);        post.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");        //设置请求参数        List<NameValuePair> nameValuePairs =new ArrayList<>();        nameValuePairs.add(new BasicNameValuePair("mobile",phone));        nameValuePairs.add(new BasicNameValuePair("templateid",MOULD_ID));        post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));        //执行请求        HttpResponse response=httpclient.execute(post);        String responseEntity= EntityUtils.toString(response.getEntity(),"utf-8");        //判断是否发送成功,发送成功返回true        String code= JSON.parseObject(responseEntity).getString("code");        if (code.equals("200")){            return "success";        }        return "error";    }}
package com.ht.duanxin;/** * @author Administrator *  *  发送手机验证码 * */public class CheckMsg {    public static void main(String[] args) {        String mobileNumber = "130******1";//手机号码        String code = "9034";//验证码        try {            String str = MobileMessageCheck.checkMsg(mobileNumber, code);            if("success".equals(str)){                System.out.println("验证成功!");            }else{                System.out.println("验证失败!");            }        } catch (Exception e) {             e.printStackTrace();        }    }}
package com.ht.duanxin;import java.io.IOException;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import com.alibaba.fastjson.JSON;import com.ht.duanxin.CheckSumBuilder;public class MobileMessageCheck {    private static final String SERVER_URL="https://api.netease.im/sms/verifycode.action";//校验验证码的请求路径URL    private static final String APP_KEY="*****************";//账号    private static final String APP_SECRET="********";//密钥    private static final String NONCE="123456";//随机数    public static String checkMsg(String phone,String sum) throws IOException {        CloseableHttpClient httpclient = HttpClients.createDefault();        HttpPost post = new HttpPost(SERVER_URL);        String curTime=String.valueOf((new Date().getTime()/1000L));        String checkSum=CheckSumBuilder.getCheckSum(APP_SECRET,NONCE,curTime);        //设置请求的header        post.addHeader("AppKey",APP_KEY);        post.addHeader("Nonce",NONCE);        post.addHeader("CurTime",curTime);        post.addHeader("CheckSum",checkSum);        post.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");        //设置请求参数        List<NameValuePair> nameValuePairs =new ArrayList<>();        nameValuePairs.add(new BasicNameValuePair("mobile",phone));        nameValuePairs.add(new BasicNameValuePair("code",sum));        post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));        //执行请求        HttpResponse response=httpclient.execute(post);        String responseEntity= EntityUtils.toString(response.getEntity(),"utf-8");        //判断是否发送成功,发送成功返回true        String code= JSON.parseObject(responseEntity).getString("code");        System.out.println(code);        if (code.equals("200")){            return "success";        }        return "error";    }}
package com.ht.duanxin;import java.security.MessageDigest;public class CheckSumBuilder {    //计算并获取checkSum    public static String getCheckSum(String appSecret,String nonce,String curTime){        return encode("SHA",appSecret+nonce+curTime);    }    private static String encode(String algorithm,String value){        if(value==null){            return null;        }        try {            MessageDigest messageDigest=MessageDigest.getInstance(algorithm);            messageDigest.update(value.getBytes());            return getFormattedText(messageDigest.digest());        } catch (Exception e) {            throw new RuntimeException(e);        }    }    private static String getFormattedText(byte[] bytes){        int len=bytes.length;        StringBuilder sb=new StringBuilder(len*2);        for(int $i=0;$i<len;$i++){            sb.append(HEX_DIGITS[(bytes[$i]>>4)&0x0f]);            sb.append(HEX_DIGITS[bytes[$i]&0x0f]);        }        return sb.toString();    }    private static final char[] HEX_DIGITS={'0','1','2','3','4','5','6',            '7','8','9','a','b','c','d','e','f'};}

好东西一起分享才对滴,希望可以帮助大家,谢谢!

1 0