阿里雲簡訊服務(傳送簡訊驗證碼)
//阿里雲簡訊的jar包 <!--阿里雲簡訊 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.6</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-cms</artifactId> <version>5.0.4</version> </dependency>
程式碼入下:
讀取properties工具類import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 傳送簡訊相關工具 * * @author Ray &
[email protected] & http://github.com/coffeefoam * @(#)Supplier.java 1.0 08/07/2016 */ public class MessageUtils { /** * 傳送簡訊訊息方法,返回驗證碼 * * @param phone * @return */ public static String sendMsg(String phone) throws Exception { //設定超時時間-可自行調整 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); //初始化ascClient需要的幾個引數 final String product = "Dysmsapi";//簡訊API產品名稱(簡訊產品名固定,無需修改) final String domain = "dysmsapi.aliyuncs.com";//簡訊API產品域名(介面地址固定,無需修改) //替換成你的AK String access = PropertiesUtil.getValue("aliyun_access_key_id");//這裡是讀取properties工具類,我把變數寫到配置檔案類裡了 String secret = PropertiesUtil.getValue("aliyun_access_key_secret"); final String accessKeyId = access;//你的accessKeyId,參考本文件步驟2 final String accessKeySecret = secret;//你的accessKeySecret,參考本文件步驟2 //初始化ascClient,暫時不支援多region(請勿修改) IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); //組裝請求物件 SendSmsRequest request = new SendSmsRequest(); //使用post提交 request.setMethod(MethodType.POST); //必填:待發送手機號。支援以逗號分隔的形式進行批量呼叫,批量上限為1000個手機號碼,批量呼叫相對於單條呼叫及時性稍有延遲,驗證碼型別的簡訊推薦使用單條呼叫的方式 request.setPhoneNumbers(phone); //必填:簡訊簽名-可在簡訊控制檯中找到 request.setSignName("卓慧教育雲"); //必填:簡訊模板-可在簡訊控制檯中找到 request.setTemplateCode("SMS_121857177"); String checkCode = CoreUtils.randomString(6, true);//此處是生成6位數驗證碼工具類 //request.setTemplateParam("{\"code\":\"123\"}");//測試用,此處json一定要嚴格按照json格式書寫 request.setTemplateParam("{\"code\":\""+checkCode+"\"}"); //可選-上行簡訊擴充套件碼(擴充套件碼欄位控制在7位或以下,無特殊需求使用者請忽略此欄位) //request.setSmsUpExtendCode("90997"); //可選:outId為提供給業務方擴充套件欄位,最終在簡訊回執訊息中將此值帶回給呼叫者 request.setOutId("yourOutId"); //請求失敗這裡會拋ClientException異常 SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { //請求成功 System.out.println(sendSmsResponse.getCode()); return checkCode; } return null; } //測試傳送簡訊 @Test public void test1() throws Exception { String s = this.sendMsg("17191085645");//手機號 System.out.println(s); } }
import java.io.IOException;
import java.util.Properties;
public class PropertiesUtil {
private static Properties p = new Properties();
/**
* 讀取properties配置檔案資訊
*/
static{
try {
p.load(PropertiesUtil.class.getClassLoader().getResourceAsStream("global.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 根據key得到value的值
*/
public static String getValue(String key)
{
return p.getProperty(key);
}
}
生成隨機驗證碼工具類
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.Random;
/**
* 關於字串和日期相關的工具
*
* @author Ray & [email protected] & http://github.com/coffeefoam
* @(#)CoreUtils.java 1.0 06/08/2017
*/
public class CoreUtils {
/**
* 生成隨機字串
*
* @param length
* @return
*/
public static String randomString(int length, boolean isNumeric) {
String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
if (isNumeric) {
base = "0123456789";
}
Random random = new Random();
StringBuffer buffer = new StringBuffer(length);
for (int i = 0; i < length; i++) {
buffer.append(base.charAt(random.nextInt(base.length())));
}
return buffer.toString();
}
/**
* 不重複的引數進行拼裝,返回查詢條件字串
*
* @param parameters 引數map
* @param sort 是否按照字典排序
* @return
*/
public static String generateQueryString(Map<String, Object> parameters, boolean sort) {
ArrayList<String> list = new ArrayList<String>();
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
// log.debug("引數:{}", entry.getKey());
if (!"".equals(entry.getValue())) {
list.add(entry.getKey() + "=" + entry.getValue());
}
}
String[] arrayToSort = list.toArray(new String[list.size()]);
if (sort) {
Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER);
}
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < list.size(); i++) {
buffer.append(arrayToSort[i]);
if (i < (list.size() - 1)) {
buffer.append("&");
}
}
return buffer.toString();
}
/**
* 根據引數獲得相關簽名
*
* @param params 加密引數,ASCII 碼從小到大排序(字典序)
* @param encrypt 加密方式 SHA1 MD5
* @return
*/
public static String signature(String buffer, String encrypt, boolean toUpperCase) {
String sign = "";
if ("MD5".equals(encrypt)) {
// MD5加密
sign = Hashing.md5().hashString(buffer, Charsets.UTF_8).toString();
} else if ("SHA1".equals(encrypt)) {
// SHA1加密
sign = Hashing.sha1().hashString(buffer, Charsets.UTF_8).toString();
}
if (toUpperCase) {
sign = sign.toUpperCase();
}
return sign;
}
/**
* 根據引數獲得相關簽名
*
* @param params 加密引數,ASCII 碼從小到大排序(字典序)
* @param encrypt 加密方式 SHA1 MD5
* @return
*/
public static String signature(Map params, String encrypt, boolean toUpperCase) {
String sign = "";
// 拼接字串,按照字典排序
String buffer = generateQueryString(params, true);
// log.debug("待加密的字串 => {}", buffer.toString());
if ("MD5".equals(encrypt)) {
// MD5加密
sign = Hashing.md5().hashString(buffer, Charsets.UTF_8).toString();
} else if ("SHA1".equals(encrypt)) {
// SHA1加密
sign = Hashing.sha1().hashString(buffer, Charsets.UTF_8).toString();
}
// log.debug("加密後的字串 <=> {}", sign);
if (toUpperCase) {
sign = sign.toUpperCase();
}
return sign;
}
相關推薦
阿里雲簡訊服務(傳送簡訊驗證碼)
//阿里雲簡訊的jar包 <!--阿里雲簡訊 --> <dependency> <groupId>com.aliyun</groupId> <
阿里雲 簡訊服務(程式碼編寫及使用)
1. 引入依賴 pom.xml 檔案 <!-- aliyun簡訊服務API介面依賴的SDK --> <dependency> <groupId>com.aliyun</groupId>
Maven 依賴-映象倉庫替換為 -- 阿里雲映象倉庫(飛快實現 pom 引入)
在本地 maven 的 setting 配置檔案中加上阿里雲映象地址就行了:新增配置內容: <!-- 阿里映象倉庫 --> <mirrors> <m
java搭建阿里雲伺服器環境(java環境+mysql+tomcat)和部署 JavaWeb 專案到雲伺服器(十分詳細)
文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:好好學java,獲取優質學習資源。購買一系列的東西其實就是花錢買塊區域,伺服器,域名,雲解析,花了好多money。。。一、租伺服器百度搜索阿里雲進入官網首頁,點選登入進入登入頁面,可以使用郵箱登入或者註冊
在阿里雲ecs伺服器(linux之centos系統)安裝除錯nginx
購買阿里雲ecs伺服器例項 由於這裡只是測試,我們就隨便買一個(當然我就選最便宜的了,這裡的搶佔式例項測試完可以直接釋放) 選擇
註冊登入(設計圖片驗證碼)
圖片驗證碼的實現 (註冊、下單、支付均有涉及) 1. 目的: 1) 驗證操作者是否是人,不是機器。 2) 防止表單重複提交。每次提交要判斷驗證碼的正確與否 生成驗證碼的要點: 1) 使用java程式碼生成圖片物件 2) 使用Random生成隨機字串 3) 將圖片物件用 Imag
Django PIL模組(生成隨機驗證碼)
PIL簡介 什麼是PIL PIL:是Python Image Library的縮寫,影象處理的模組。主要的類包括Image,ImageFont,ImageDraw,ImageFilter PIL的匯入 首先需要安裝一下pillow包
HP限制發送驗證碼條數(防刷驗證碼)
$_server tar ssa 需要 多賬號 路徑 num 驗證碼 clas 因為項目原因,最近在頻繁接觸短信驗證這一功能,前幾天剛接入了短信驗證碼的接口,現在又要準備做一個新功能上去,為了防止被刷,需要增加一個新的限制,限制每天用戶獲取驗證碼的條數。接入的接口是互億無線
模擬登陸之豆瓣(手動輸入驗證碼)
from lxml import etree import requests from PIL import Image session=requests.session() def get_html(url,uname,password,zym,va): t
驗證碼實現方式-------(js實現驗證碼):
一.js實現驗證碼: 第一步:建一個login.htm,一個code.js檔案,一個code.css檔案,準備一張圖片code.jpg 第二步:編寫login.htm檔案,內容為: <html> <head> <script
Python爬蟲學習4:requests.post模擬登入豆瓣(包括獲取驗證碼)
1. 在豆瓣登入網頁嘗試登入後開啟開發者工具,可以查詢後去Headers和Form Data資訊。2. 實現程式碼import requests import html5lib import re from bs4 import BeautifulSoup s = re
點選圖片,圖片src重新載入(用於圖片驗證碼)
效果圖: 後臺給的連結直接插入html中img的src裡,點選圖片重新載入這個src因為src的內容一直不變,比如都是 src="http://www.xxx.com/xxx/get?tocken
如何接入阿里雲簡訊服務 (完整指南)
目錄 一、註冊並實名認證 二、開通簡訊服務 三、獲取AccessKey 四、設定簡訊內容 五、配置簡訊介面 六、傳送簡訊 七、常見問題FAQ 一、註冊並實名認證 使用阿里雲簡訊服務,使用者需要先在阿里雲註冊,並完成個人/企業實名認證。 注意:要傳送營
阿里雲簡訊服務(JAVA)
一,前言 簡訊驗證碼想必大家都不陌生,在很多網站,APP中都有使用到。比如登入,註冊,身份校驗等場景。不過通常情況下,簡訊服務都是外包給第三方公司的,接下來向大家分享如何使用阿里的簡訊服務。 二,雲通訊 阿里雲官網:https://www.aliyun.com/ 忘記說了,沒有賬號的可以直接使用阿
javaweb使用JSON格式利用雲之訊平臺傳送簡訊(單條)
package foreiger.utils; import net.sf.json.JSONObject; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; im
TP5呼叫阿里雲簡訊介面實現傳送簡訊功能
因為專案中需要用到阿里雲簡訊驗證碼功能,所以就購買了相應的簡訊包進行測試,以下就是完整程式碼: use Aliyun\Core\Config; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\Defau
繼百度天工物可視之後,阿里雲Link Develop提供WEB視覺化搭建服務(手機瀏覽請橫向)
小邁閘道器最近對接了阿里的Link Develop平臺,並在實際專案中得到應用,阿里雲在平臺側推出了快速web應用,進一步降低了WEB應用的門檻。簡介如下: Web 應用即完整的基於瀏覽器展示的網頁程式: 在Web端體現為獨立部署的一整
阿里雲容器服務Kubernetes之Jenkins X(1)-安裝部署實踐篇
摘要: "Jenkins X is a CI/CD solution for modern cloud applications on Kubernetes." 這是Jenkins社群對於Jenkins X 的官方總結和定義。 本文的部署實踐過程參考了雲棲文章 如何在阿里雲
阿里雲證書服務使用教程(下篇)
產品優勢:雲盾證書服務具有以下優勢:簡潔性貼合阿里雲使用者購買習慣,提供簡潔的證書購買流程。安全性提供安全的證書和金鑰儲存方案,免去尋找其他金鑰儲存方案的煩惱。易用性和阿里雲產品聯通,實現一鍵部署數字證書到阿里雲產品。名詞解釋:數字證書數字證書是一個經證書授權中心數字簽名的包
阿裏雲服務器連接ftp服務(軟件的使用)
直接 雲服務 text mini 服務器 窗口 clas 技術分享 軟件 首先你需要有一個阿裏雲的ECS服務器 開通了寬帶之後,ECS服務器就可以上網了 可以在本地電腦cmd控制臺運行mstsc.exe啟動遠程桌面連接 windows+R 計算機名輸入ECS服務器的公網