网易云信短信接口java,调用网易云短信验证码接口Demo

最近在开发新的项目,因为需要使用验证码验证这个功能。我选择的是 网易云 的验证码接口。免费使用20条。并且在正式使用的过程中,对比了很多家以后,感觉还是他家的便宜。因为随着你购买的短信包数量的增加,价钱会相应的降低,下发的效率挺高的。

官方给出的demo已经是很完美了,但是我总有中使用最新插件的强迫症,随着插件的更新,可能有些函数已经被废弃或者将要废弃。给出我写的一个demo。

SendCode.java (调用成功以后,返回的json串中,obj字段对应的值即下发的内容)

public class SendCode {

public static String send(String mobile) throws Exception {

CloseableHttpClient httpClient = HttpClientBuilder.create().build();

HttpPost httpPost = new HttpPost(NeteaseConsts.SERVER_URL);

String curTime = String.valueOf((new Date()).getTime() / 1000L);

String nonce = CreateUUID.getUUID();

String checkSum = CheckSumBuilder.getCheckSum(NeteaseConsts.APP_SECRET, nonce, curTime);

// 设置请求的header

httpPost.addHeader("AppKey", NeteaseConsts.APP_KEY);

httpPost.addHeader("Nonce", nonce);

httpPost.addHeader("CurTime", curTime);

httpPost.addHeader("CheckSum", checkSum);

httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");

// 设置请求的的参数,requestBody参数

List nvps = new ArrayList();

nvps.add(new BasicNameValuePair("mobile", mobile));

nvps.add(new BasicNameValuePair("codeLen", NeteaseConsts.CODELEN));

httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));

// 执行请求

HttpResponse response = httpClient.execute(httpPost);

String resultStr = EntityUtils.toString(response.getEntity(), "utf-8");

if (!StringUtils.isEmpty(resultStr)) {

JsonObject resultData = new JsonParser().parse(resultStr).getAsJsonObject();

String code = resultData.get("code").getAsString();

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

String obj = resultData.get("obj").getAsString();

return obj;

}

}

return "";

}

}

CheckSumBuilder.java(官方给出的sha1加密方案,已经是写好的)

public class CheckSumBuilder {

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' };

}

NeteaseConsts.java (自己写的静态类,专门放置一些固定参数)

public class NeteaseConsts {

public static final String SERVER_URL = "https://api.netease.im/sms/sendcode.action";

public static final String APP_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX";

public static final String APP_SECRET = "XXXXXXXXXXXXXXX";

public static final String CODELEN = "6";

}

pom.xml(搭配的gson版本,以及httpcore、httpclient版本信息)

com.google.code.gson

gson

2.8.1

org.apache.httpcomponents

httpcore

4.4.6

org.apache.httpcomponents

httpclient

4.5.3

0

相关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值