云平台短信验证码通知短信java/php/.net开发实现
发表于:2023-02-03 作者:安全数据网编辑
编辑最后更新 2023年02月03日,一、本文目的大部分平台都有一个接入发送短信验证码、通知短信的需求。虽然市场上大部分平台的接口都只是一个非常普通的HTTP-GET请求,但终归有需要学习和借鉴使用的朋友。本文的初衷是主要提供学习便利,方
一、本文目的
- 大部分平台都有一个接入发送短信验证码、通知短信的需求。虽然市场上大部分平台的接口都只是一个非常普通的HTTP-GET请求,但终归有需要学习和借鉴使用的朋友。
- 本文的初衷是主要提供学习便利,方便初学者学习简单的http接口对接实现,由于各大短信通道服务商API参数基本相同,本Demo可以适当减少开发者对接短信通道接口的开发成本,提供参考。
- 若有朋友不想从文章中复制源码,需要直接下载,源码已上传至GitHub。
- GitHub传送门:https://github.com/yzchen0o0/demo-sms
二、发送短信接口请求
- 请求参数模板
https://{{url}}?appKey={{app_key}}&appSecret={{app_secret}}&phones={{mobile}}&content=【{{sign}}】{{content}}
- 示例
https://xxxyun.com/sendsms?appKey=aaaaa&appSecret=bbbb&phones=13888888888&content=【某云】您的验证码是:666666
三、参数描述
参数名 | 说明 |
---|---|
url | 请求地址 |
app_key | 客户在供应商注册的唯一key码 |
app_secret | 客户在供应商注册的唯一secret码 |
mobile | 接收短信的用户手机号 |
sign | 短信内容的产品名称 |
四、各开发语言实现
1、Java
import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * 短信发送工具类 * * http接口请求依赖 okhttp-3.14.2.jar, okio-1.17.2.jar *
*/public class SmsUtil { private static final String HOST = "https://api.zhuanxinyun.com/api/v2/sendSms.json"; private static final String SIGN = "【签名】"; private static final String APP_KEY = "app_key"; private static final String APP_SECRET = "app_secret"; /** * 测试请求 * @param args */ public static void main(String[] args) { String mobile = "18566770000"; String code = "666666"; String body = sendSmsCode(mobile, code); System.out.println(body); } /** * 发送短信验证码 * @param mobile 接收手机号 * @param code 验证码 */ public static String sendSmsCode(String mobile, String code) { StringBuffer content = new StringBuffer().append("验证码:" ).append(code).append(",如非本人操作请忽略。"); return sendSms(mobile, content.toString()); } /** * 发送短信信息 * @param mobile 接收手机号 * @param content 短信内容 */ public static String sendSms(String mobile, String content) { // 拼接请求参数 StringBuffer url = new StringBuffer().append(HOST).append("?appKey=").append(APP_KEY).append("&appSecret=") .append(APP_SECRET).append("&phones=").append(mobile).append("&content=").append(SIGN).append(content); // 封装请求参数 Request request = new Request.Builder().url(url.toString()).get().build(); OkHttpClient client = new OkHttpClient(); try { // 发起请求 Response response = client.newCall(request).execute(); return response.body().string(); } catch (Exception e) { e.printStackTrace(); } return null; }}
2、php
3、.Net
using System;using System.IO;using System.Net;using System.Text;namespace SmsCode{ class Program { private static String HOST = "https://api.zhuanxinyun.com/api/v2/sendSms.json"; private static String SIGN = "【签名】"; private static String APP_KEY = "app_key"; private static String APP_SECRET = "APP_SECRET"; static void Main(string[] args) { string mobile = "手机号"; string code = "内容"; string body = sendSmsCode(mobile, code); Console.WriteLine(body); } /** * 发送短信验证码 * @param mobile 接收手机号 * @param code 验证码 */ public static String sendSmsCode(String mobile, String code) { StringBuilder content = new StringBuilder().Append("验证码:").Append(code).Append(",如非本人操作请忽略。"); return sendSms(mobile, content.ToString()); // StringBuilder } /** * 发送短信信息 * @param mobile 接收手机号 * @param content 短信内容 */ public static string sendSms(String mobile, String content) { string msg = string.Empty; // 拼接请求参数 StringBuilder url = new StringBuilder().Append(HOST).Append("?appKey=").Append(APP_KEY).Append("&appSecret=") .Append(APP_SECRET).Append("&phones=").Append(mobile).Append("&content=").Append(SIGN).Append(content); // 封装请求参数 try { // 发起请求 msg = Request_GET(url.ToString(), "UTF-8"); } catch (Exception ex) { msg=ex.Message; } return msg; } public static string Request_GET(string urlString, string encoding) { HttpWebRequest httpWebRequest = null; HttpWebResponse httpWebResponse = null; Stream stream = null; StreamReader streamReader = null; string result = string.Empty; try { httpWebRequest = (WebRequest.Create(urlString) as HttpWebRequest); httpWebRequest.Method = "GET"; //httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; Maxthon 2.0)"; httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); stream = httpWebResponse.GetResponseStream(); streamReader = new StreamReader(stream, Encoding.GetEncoding(encoding)); result = streamReader.ReadToEnd(); } catch (SystemException ex) { result = "err:" + ex.Message; } finally { if (httpWebRequest != null) { httpWebRequest.Abort(); } if (httpWebResponse != null) { httpWebResponse.Close(); } if (stream != null) { stream.Close(); } if (streamReader != null) { streamReader.Close(); } } return result; } }}
五、返回值
{"errorCode":"000000","errorMsg":"提交成功"}
000000 提交成功
技术交流
My Blog
blog.guijianpan.com
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
惠普服务器关闭通电自检
分发服务器未正确安装
大专学的计算机网络技术出路
服务器连接拒绝接入是什么意思
网络安全顾问年薪最高的人
如何免费建立自己的数据库
国家网络安全概念股
英国网络安全10步骤
数据库怎么设置只备份一周
本机文件怎么传到服务器上
长沙软件开发工资一般多少钱
税务局信息网络安全搞
数据库架构是指
群晖数据备份到服务器
自动化软件开发培训
微软认证数据库专家
mqtt 云服务器搭建
数据库小白入门
网络安全e什么意思
网络技术3次握手4次挥手
数据库删除违法唯一约束
莱芜软件开发价格
离线进入mc正版服务器
数据库数据文件什么时候为空
湖北正规软件开发费用是多少
服务器被组织盯上了怎么办
软件开发外包哪里正规
修改数据库查询前三行
网络安全官兵
计算机网络技术对口单招