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 ...
随机推荐
- c++ 中遇到的语法问题
在头文件中给函数赋值 如这样: func(int a,int b = 1); 在.cpp文件中不能同时这样写,否则会报错,只能这样写func(int a,int b ),所以从其他地方移植的代码需要注 ...
- 记一次NACOS开放公网访问导致服务器被挖矿的解决流程 [kdcflush] acosd
前言 事情的起因是这样的,昨天领导找到我说服务器内存满了,影响其他程序正常运行了,让我把测试服务器上之前启动的六个JAVA程序停一下,接着我就登上服务器执行docker compose down把服务 ...
- 【教程】运行所选代码生成器时出错:“无法解析依赖项。"EntityFramework 6.4.4" 与 ' EntityFramework.zh-Hans 6.2.0 约束:EntityFramework(=6.2.0)'不兼容。"
添加包含视图的控制器 执行以上添加"包含视图的MVC5控制器(使用Entity Framework)时报错 解决方案 在解决方案资源管理器中找到packages.config 注释掉Enti ...
- RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB.Dify.FastGPT.RagFlow.Anything-LLM,以及更多推荐 1.MaxKB MaxKB = Max Kn ...
- 【Hbase】1.3.1版本安装
环境: 1核4G内存128G磁盘,三台机器同一个配置 192.168.242.131 192.168.242.132 192.168.242.133 -- Linux Centos7 x64 系统平台 ...
- 【Java-GUI】08 Swing02 边框和选择器
边框案例: package cn.dzz.swing; import javax.swing.*; import javax.swing.border.*; import java.awt.*; pu ...
- 【转载】 银河麒麟V10系统安装U盘制作
版权声明:本文为CSDN博主「CPUOS520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/liuhao_0 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-63 - Canvas和SVG元素定位
1.简介 今天宏哥分享的在实际测试工作中很少遇到,比较生僻,如果突然遇到我们可能会脑大.懵逼,一时之间不知道怎么办?所以宏哥这里提供一种思路供大家学习和参考. 2.SVG简介 svg也是html5新增 ...
- 2024 年了,IT 运维监控系统都有哪些推荐?
大浪淘沙,2024 年的今天,市面上很多监控系统慢慢淡出了大家的视野,而一些新的监控系统也逐渐崭露头角.今天我们就来看看 2024 年的当下,哪些 IT 运维监控系统最值得关注. Prometheus ...
- int128输入输出流
using i128 = __int128; istream &operator>>(istream &is, i128 &x) { string s; is &g ...