网易云信发送短信验证码

  1 package com.hydsoft.hotnetworks.system.controller;
  2
  3 import java.io.IOException;
  4 import java.io.UnsupportedEncodingException;
  5 import java.security.MessageDigest;
  6 import java.util.ArrayList;
  7 import java.util.Date;
  8 import java.util.List;
  9
 10 import org.apache.http.HttpEntity;
 11 import org.apache.http.NameValuePair;
 12 import org.apache.http.client.ClientProtocolException;
 13 import org.apache.http.client.entity.UrlEncodedFormEntity;
 14 import org.apache.http.client.methods.CloseableHttpResponse;
 15 import org.apache.http.client.methods.HttpPost;
 16 import org.apache.http.impl.client.CloseableHttpClient;
 17 import org.apache.http.impl.client.HttpClients;
 18 import org.apache.http.message.BasicNameValuePair;
 19 import org.apache.http.util.EntityUtils;
 20
 21 public class Test {
 22
 23     public static void main(String args[]) {
 24         String url = "https://api.netease.im/sms/sendcode.action"; // 获取验证码的固定请求路径
 25         String appKey = "b9bfe886534643e110f8446d860ead7c";    //    应用的 key
 26         String appSecret = "610128b2fabe";    // 应用的 密码
 27         String nonce = "123456";    //    随机数
 28         String mobile = "18201623501";    //    目标手机号码
 29         String curTime=String.valueOf((new Date().getTime()/1000L));
 30         String checkSum = getCheckSum(appSecret, nonce, curTime);    //    得到 发送验证码必须的参数checkSum
 31
 32         CloseableHttpClient httpclient = HttpClients.createDefault();
 33         // 将参数保存到请求头中
 34         HttpPost httpPost = new HttpPost(url);
 35         httpPost.addHeader("AppKey",appKey);
 36         httpPost.addHeader("Nonce",nonce);
 37         httpPost.addHeader("CurTime",curTime);
 38         httpPost.addHeader("CheckSum",checkSum);
 39         httpPost.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
 40
 41
 42         List<NameValuePair> formparams = new ArrayList<NameValuePair>();
 43         formparams.add(new BasicNameValuePair("mobile", mobile));
 44         UrlEncodedFormEntity uefEntity;
 45         try {
 46             uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
 47             httpPost.setEntity(uefEntity);
 48             System.out.println("executing request " + httpPost.getURI());
 49             CloseableHttpResponse response = httpclient.execute(httpPost);
 50             try {
 51                 HttpEntity entity = response.getEntity();
 52                 if (entity != null) {
 53                     System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));
 54                 }
 55             } finally {
 56                 response.close();
 57             }
 58         } catch (ClientProtocolException e) {
 59             e.printStackTrace();
 60         } catch (UnsupportedEncodingException e1) {
 61             e1.printStackTrace();
 62         } catch (IOException e) {
 63             e.printStackTrace();
 64         } finally {
 65             // 关闭连接,释放资源
 66             try {
 67                 httpclient.close();
 68             } catch (IOException e) {
 69                 e.printStackTrace();
 70             }
 71         }
 72     }
 73     // 计算并获取CheckSum
 74     public static String getCheckSum(String appSecret, String nonce, String curTime) {
 75         return encode("sha1", appSecret + nonce + curTime);
 76     }
 77
 78     // 计算并获取md5值
 79     public static String getMD5(String requestBody) {
 80         return encode("md5", requestBody);
 81     }
 82
 83     private static String encode(String algorithm, String value) {
 84         if (value == null) {
 85             return null;
 86         }
 87         try {
 88             MessageDigest messageDigest
 89                     = MessageDigest.getInstance(algorithm);
 90             messageDigest.update(value.getBytes());
 91             return getFormattedText(messageDigest.digest());
 92         } catch (Exception e) {
 93             throw new RuntimeException(e);
 94         }
 95     }
 96     private static String getFormattedText(byte[] bytes) {
 97         int len = bytes.length;
 98         StringBuilder buf = new StringBuilder(len * 2);
 99         for (int j = 0; j < len; j++) {
100             buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
101             buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
102         }
103         return buf.toString();
104     }
105     private static final char[] HEX_DIGITS = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘,
106             ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘ };
107 }

2016-08-09 18:28:51

时间: 2024-11-09 08:47:12

网易云信发送短信验证码的相关文章

程序君带你畅聊发送短信验证码

现在不管是网站,还是app等互联网和移动互联网产品,绝大部分注册都是直接用手机号注册登录的,方式就是给手机发送短信验证码,然后把验证码填入,后台程序去匹配判断用户填入的验证码和发送的是否一致. 我最近做的好几个项目都用到了发送短信验证码的这个第三方接口,其实这个发送验证码的原理很简单,实现也很简单. 如下三个图,是我做的其中一个项目的相关效果截图: 我用的比较多的第三方短信接口是容联-云通讯的(http://www.yuntongxun.com/),它的API挺强大的,也挺稳定的,使用也不难,有

JAVA利用第三方平台发送短信验证码。

前段时间自己做的一个小项目中,涉及到用短信验证码登录.注册的问题,之前没涉及过这一块,看了别人的博客其实也是似懂非懂的,现在就将自己做的利用第三方短信平台来发送验证码这个功能记下来. 本文以注册为例,在SpringMVC+Spring+Mybatis框架的基础上完成该短信验证码功能. 发送短信验证码的原理是:随机生成一个6位数字,将该6位数字保存到session当中,客户端通过sessionid判断对应的session,用户输入的验证码再与session记录的验证码进行比较. 为了防止有广告嫌疑

超实用的JavaScript代码段 Item4 --发送短信验证码

发送短信验证码 实现点击“发送验证码”按钮后,按钮依次显示为“59秒后重试”.“58秒后重试”…直至倒计时至0秒时再恢复显示为“发送验证码”.在倒计时期间按钮为禁用状态 . 第一步.获取按钮.绑定事件.设置定时器变量和计时变量 第二步.添加定时器,每隔1秒钟计时减 1,直至当计时小于等于 0 时清除定时器,按钮恢复为“发送验证码”,否则显示为“X秒后重试” <!doctype html> <html lang="en"> <head> <met

各大APP注册时发送短信验证码是怎么实现的?

回答这个问题可以从多个角度来回答,比如商务角度和技术角度,为了快速清晰的让广大的读者了解这个过程,本文我们从商务角度来深入分析. 实现原理 现各大APP发送短信的服务一般是由第三方短信服务商提供的,他们整合了移动,联通.电信三方资源,三网都可以发送,这样就不需要直接对接运营商了. 发送短信验证码主要是为了验证手机方的真实性,实现原理简单说就是系统先生成一个验证码,调用第三方服务商的短信接口,发送到手机方,手机方输入验证码,再由系统去校验是否符合,符合则说明手机真实有效. 服务商选择 提供短信接入

阿里云短信服务发送短信验证码(JAVA开发此功能)

开发此功能需注册阿里云账号,并开通短信服务(免费开通) 充值后,不会影响业务的正常使用!(因为发送验证类短信:1-10万范围的短信是0.045元/条).开发测试使用,充2块钱测试足够了 可参考阿里云官方开发文档了解详情,文档中写的也是很详细了... https://help.aliyun.com/product/44282.html 代码编写之前需要准备几个东西 1,aliyun-java-sdk-core.jar ,  aliyun-java-sdk-dysmsapi.jar  这2个jar包

android发送短信验证码并自动获取验证码填充文本框

android注册发送短信验证码并自动获取短信,截取数字验证码填充文本框. 一.接入短信平台 首先需要选择短信平台接入,这里使用的是榛子云短信平台(http://smsow.zhenzikj.com), 两分钟申请测试账号,赠送了100条测试短信. android使用java的jar包即可开发 jar下载: http://smsow.zhenzikj.com/doc/sdk.html API文档:http://smsow.zhenzikj.com/doc/java_sdk_doc.html 使用

python利用第三方模块,发送短信验证码

对于初学者,如何利用第三方python开发包发送短信验证码,下面是具体的实现和记录过程! 环境:虚拟机上centos7平台,python3.7版本: 第三方短信平台:榛子云短信(smsow.zhenzikj.com) SDK下载地址: smsow.zhenzikj.com/sdkdownload- 注意要下载python3的 API文档: smsow.zhenzikj.com/doc/python_- 首先,申请账号的部分就省略了 1. 获得appid和appSecret 使用申请的账号,登录用

【Python web 开发】云片网发送短信验证码

发送短信验证码 是要使用第三方服务的,运营商是不可能提供对外的个人发送短信服务功能,我们本身也没有能力去发送验证码,云片网是目前提供这种服务使用率较高的服务商之一 我们先来看下云片网国内单条发送短信的api 根据api 写了一个脚本,这个appkey 我还没申请 如何使用云片网发送短信? 1.首选要申请签名 + 填写 短信模板 2.签名审核,短信模板审核 3.一定要将自己的服务器的ip地址填写到  [云片网--设置--ip 白名单--添加服务器的IP地址] 不然会发送失败 本机测试查到本机的IP

微信小程序发送短信验证码完整实例

微信小程序注册完整实例,发送短信验证码,带60秒倒计时功能,无需服务器端.效果图: 代码: index.wxml <!--index.wxml--> <view class="container"> <view class='row'> <input placeholder='请输入姓名' bindinput='bindNameInput'/> </view> <view class='row'> <inpu