java短信验证 网易_网易短信java实现

只需将一下3个类导入工程即可,使用前去网易云注册,获得账号和密钥,使用时调用即可。

1.获取计算checksum

import java.security.MessageDigest;

/**

* 网易云短信————获取计算checksum

*/

public class CheckSumBuilder {

// 计算并获取CheckSum

public static String getCheckSum(String appSecret, String nonce, String curTime) {

return encode("sha1", appSecret + nonce + curTime);

}

// 计算并获取md5值

public static String getMD5(String requestBody) {

return encode("md5", requestBody);

}

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 buf = new StringBuilder(len * 2);

for (int j = 0; j < len; j++) {

buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);

buf.append(HEX_DIGITS[bytes[j] & 0x0f]);

}

return buf.toString();

}

private static final char[] HEX_DIGITS =

{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

}

2.发送短信

import com.alibaba.fastjson.JSON;

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 java.io.IOException;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Map;

/**

* 网易云短信----发送短信

*/

public class YunXin {

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";//随机数

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 nameValuePairs = new ArrayList();

nameValuePairs.add(new BasicNameValuePair("mobile", phone));

nameValuePairs.add(new BasicNameValuePair("templateid", "3060582")); //短信模板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";

}

}

3. 验证短信验证码

import java.io.IOException;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import com.alibaba.fastjson.JSON;

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;

/**网易云短信————验证

*/

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 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");

if (code.equals("200")) {

return "success";

}

return "error";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值