翼度科技»论坛 编程开发 .net 查看内容

C# ASP.NET Core Web API 框架 实现向手机发送验证码短信

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
本文章主要是在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
  1.     public static async Task<string> SendSmsAsync(string number)
  2.     {
  3.         using (var client = new HttpClient())
  4.         {
  5.             // 随机编号
  6.             Random random = new Random();
  7.             int mobileCode = random.Next(100000, 999999); // 生成一个六位数的随机数
  8.             string content = $"您的验证码是:{mobileCode}。请不要把验证码泄露给其他人。";
  9.             var parameters = new List<KeyValuePair<string, string>>
  10.             {
  11.                 new KeyValuePair<string, string>("account", APPID),
  12.                 new KeyValuePair<string, string>("password", APIKEY),
  13.                 new KeyValuePair<string, string>("mobile", number),
  14.                 new KeyValuePair<string, string>("content", content)
  15.             };
  16.             var contentToSend = new FormUrlEncodedContent(parameters);
  17.             try
  18.             {
  19.                 var response = await client.PostAsync(URL, contentToSend);
  20.                 var responseBody = await response.Content.ReadAsStringAsync();
  21.                 // 解析 XML 响应
  22.                 // 解析 XML
  23.                 XDocument xmlDoc = XDocument.Parse(responseBody);
  24.                 // 从 XML 中获取信息
  25.                 var code = xmlDoc.Root.Element(XName.Get("code", "http://106.ihuyi.com/"))?.Value;
  26.                 var msg = xmlDoc.Root.Element(XName.Get("msg", "http://106.ihuyi.com/"))?.Value;
  27.                 var smsid = xmlDoc.Root.Element(XName.Get("smsid", "http://106.ihuyi.com/"))?.Value;
  28.                 Console.WriteLine($"code: {code}");
  29.                 Console.WriteLine($"msg: {msg}");
  30.                 Console.WriteLine($"smsid: {smsid}");
  31.                 Console.WriteLine($"mo: {mobileCode}");
  32.                 if (code == "2")
  33.                 {
  34.                     Console.WriteLine("短信提交成功");
  35.                     return mobileCode.ToString();
  36.                 }
  37.             }
  38.             catch (Exception ex)
  39.             {
  40.                 Console.WriteLine(ex.Message);
  41.             }
  42.             return "";
  43.         }
  44.     }
  45. }
复制代码
}
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("手机号码不能为空");
}
  1.         var result = await SendSmsUtil.SendSmsAsync(phoneNumber);
  2.         if (string.IsNullOrEmpty(result))
  3.         {
  4.             return StatusCode(500, "发送短信失败");
  5.         }
  6.         return Ok(new { VerificationCode = result });
  7.     }
  8. }
复制代码
}`
6.输入手机号并且测试 下面是个成功的结果 手机并且能受到验证码

以上内容已实现手机验证码功能。代码主要参考官网代码和AI生成还有,可能存在一些语句问题感谢大家的指导和建议!
转载请请注明出处,谢谢!
朱世杰(@Twolp)指导

来源:https://www.cnblogs.com/songyilinaishiqi/p/18438226
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具