C# ASP.NET Core Web API 框架 实现向手机发送验证码短信
本文章主要是在C# ASP.NET Core Web API框架实现向手机发送验证码短信功能。这里我选择是一个互亿无线短信验证码平台,其实像阿里云,腾讯云上面也可以。
- 首先我们先去 互亿无线 https://www.ihuyi.com/api/sms.html 去注册一个账号
注册完成账号后,它会送10条免费短信以及通话验证码(ps:我这上面不是10条因为我已经使用了 新人都是10条)
2.下面开始代码首先创建一个SendSmsUtil.cs的类
3.下面直接上代码
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace YourNamespace.Utils
{
public class SendSmsUtil
{
private static readonly string URL = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; // 国内请求路径
private static readonly string APPID = "这里填写自己的APPID"; // 这里填写自己的APPID
private static readonly string APIKEY = "这里填写自己的APIKEY"; // 这里填写自己的APIKEY
public static async Task<string> SendSmsAsync(string number)
{
using (var client = new HttpClient())
{
// 随机编号
Random random = new Random();
int mobileCode = random.Next(100000, 999999); // 生成一个六位数的随机数
string content = $"您的验证码是:{mobileCode}。请不要把验证码泄露给其他人。";
var parameters = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("account", APPID),
new KeyValuePair<string, string>("password", APIKEY),
new KeyValuePair<string, string>("mobile", number),
new KeyValuePair<string, string>("content", content)
};
var contentToSend = new FormUrlEncodedContent(parameters);
try
{
var response = await client.PostAsync(URL, contentToSend);
var responseBody = await response.Content.ReadAsStringAsync();
// 解析 XML 响应
// 解析 XML
XDocument xmlDoc = XDocument.Parse(responseBody);
// 从 XML 中获取信息
var code = xmlDoc.Root.Element(XName.Get("code", "http://106.ihuyi.com/"))?.Value;
var msg = xmlDoc.Root.Element(XName.Get("msg", "http://106.ihuyi.com/"))?.Value;
var smsid = xmlDoc.Root.Element(XName.Get("smsid", "http://106.ihuyi.com/"))?.Value;
Console.WriteLine($"code: {code}");
Console.WriteLine($"msg: {msg}");
Console.WriteLine($"smsid: {smsid}");
Console.WriteLine($"mo: {mobileCode}");
if (code == "2")
{
Console.WriteLine("短信提交成功");
return mobileCode.ToString();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return "";
}
}
}
}
4.APPID和APIKEY 在这个地方查看
5.下面是控制器中需要的代码
`using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using YourNamespace.Utils;
namespace YourNamespace.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SmsController : ControllerBase
{
[HttpPost("send")]
public async Task SendSms([FromBody] string phoneNumber)
{
if (string.IsNullOrEmpty(phoneNumber))
{
return BadRequest("手机号码不能为空");
}
var result = await SendSmsUtil.SendSmsAsync(phoneNumber);
if (string.IsNullOrEmpty(result))
{
return StatusCode(500, "发送短信失败");
}
return Ok(new { VerificationCode = result });
}
}
}`
6.输入手机号并且测试 下面是个成功的结果 手机并且能受到验证码
以上内容已实现手机验证码功能。代码主要参考官网代码和AI生成还有,可能存在一些语句问题感谢大家的指导和建议!
转载请请注明出处,谢谢!
朱世杰(@Twolp)指导
C# ASP.NET Core Web API 框架 实现向手机发送验证码短信的更多相关文章
- 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一)
一.创建ASP.NET Core Web API项目(若项目已创建,则可跳过本节内容) 1.双击打开VS2022. 2.单击"创建新项目",如下图. 3.选择"ASP.N ...
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...
- ASP.NET Core Web API Cassandra CRUD 操作
在本文中,我们将创建一个简单的 Web API 来实现对一个 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 来存储数据,在这里不会创建 UI ,Web API 的测试将 ...
- 在Mac下创建ASP.NET Core Web API
在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...
- Gitlab CI 自动部署 asp.net core web api 到Docker容器
为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行代码就展示了一个基本工作原理.然而,要将这样的解决方案运用到实际生产环境,还有很 ...
- ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容.下面的类图描述了我们已经实现的组件及其之间的关系,貌似系统已经变得越来越复杂了. 其 ...
- ASP.NET Core Web API 索引 (更新Identity Server 4 视频教程)
GraphQL 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上) 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下) [视频] 使用ASP.NET C ...
随机推荐
- linux环境部署搭建流程
linux环境部署搭建流程 1,ubuntu/centos系统安装 2,ip网络配置 3,路由和防火墙 4,时间同步服务器 5,ssh协议配置(Windows安装xshell/secureCRT) 6 ...
- [rCore学习笔记 020]第二章作业
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 编程题 ...
- 【JS】07 JS对象
所有事物都是对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 布尔型可以是一个对象. 数字型可以是一个对象. 字符 ...
- TinyVue v3.17.0 正式发布,推出了一款基于 Quill 2.0 的富文本编辑器,功能强大、开箱即用!
你好,我是 Kagol. 我们非常高兴地宣布,2024年6月26日,TinyVue 发布了 v3.17.0 . TinyVue 每次大版本发布,都会给大家带来一些实用的新特性,上一个版本我们重构了 c ...
- 元学习的经典文献:S. Thrun - 1998 - LEARNING TO LEARN: INTRODUCTION AND OVERVIEW
地址: https://link.springer.com/chapter/10.1007/978-1-4615-5529-2_1
- 读博期间的宿舍 && 行李打包 —— 大连开发区校区
=============================================
- 【转载】 在Ubuntu环境下,搜狗输入法乱码问题的解决
原文作者:高坦的博客 | Tan's Blog 原文链接:https://www.cnblogs.com/gtscool/p/12234104.html本文采用 BY-NC-SA 许可协议.转载请注明 ...
- git clone 如何通过proxy进行远程代码仓库拷贝下载
git使用proxy的方式和ssh的情况是差不多的,给出借鉴: SSH如何通过proxy进行服务器连接 ------------------------------------------------ ...
- 一步步开发Windows服务(Windows Service)[转]
基于0起步来创建一个服务,做到简单的记录时间日志功能,其具体招行方法可自行添加. 1.创建服务 2.删除默认服务文件 3.添加自己的服务文件 4.更改启动项目 5. 引用 using System.T ...
- Jenkins部署架构概述
1.Jenkins是什么 Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续.自动的构建/测试软件项目.监控外部任务的运行. Jenkins用Java ...