首先本次需求是在MVC5中进行的,通过收费的融云服务来验证手机号码,而且本次的项目也是前后台分离,所以添加了WEBAPI2,那么先添加WEBAPI的接口

using System;
using System.Web.Http;
using System.Net.Http;
using System.Web.Script.Serialization;
using System.Text;
using System.Web; namespace BlackNails.Controllers
{
public abstract class WebAPI2BaseController : ApiController
{
public HttpContext context = HttpContext.Current; public static HttpResponseMessage toJson(Object obj)
{
String str;
if (obj is String || obj is Char)
{
str = obj.ToString();
}
else
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
str = serializer.Serialize(obj);
}
HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };
return result;
} public string Options()
{
return null; // HTTP 200 response with empty body
}
}
}

然后添加一个UserController接口文档

using BlackNails.CommonClass;
using BlackNails.Controllers;
using BlackNails.DAL;
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using System.Web.Script.Serialization; namespace BlackNails.WebAPI
{
public class UserController : WebAPI2BaseController
{ [HttpGet]
public HttpResponseMessage sendCode(string mobile)
{
var response = new Response(); Random r = new Random();
int i = r.Next(, );
string Random = i.ToString(); TimeSpan ts = DateTime.Now - DateTime.Parse("1970-1-1");
string Timestamp = Convert.ToInt32(ts.TotalSeconds).ToString(); //以字节方式存储
byte[] data = Encoding.Default.GetBytes(Constant.APP_SECRET + Random + Timestamp);
System.Security.Cryptography.SHA1 sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
//得到哈希值
byte[] result = sha1.ComputeHash(data);
//转换成为字符串的显示
string Signature = BitConverter.ToString(result).Replace("-", ""); WebRequest request = WebRequest.Create("http://api.sms.ronghub.com/sendCode.json");
request.Method = "POST";
string postData = "mobile=" + mobile + "&templateId=" + Constant.TEMPLATE_REGISTER + "&region=86";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
request.Headers.Add("App-Key", Constant.APP_KEY);
request.Headers.Add("Nonce", Random);
request.Headers.Add("Timestamp", Timestamp);
request.Headers.Add("Signature", Signature);
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, , byteArray.Length);
dataStream.Close();
WebResponse resp = request.GetResponse();
dataStream = resp.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
ReturnJson _ReturnJson = jsonSerializer.Deserialize<ReturnJson>(responseFromServer);
var code = _ReturnJson.code;
var sessionId = _ReturnJson.sessionId;
if(code == )
{
response.Code = ;
response.Message = "发送验证码成功!";
context.Cache.Insert(mobile, sessionId);
} else
{
response.Code = ;
response.Message = "发送验证码失败!";
context.Cache.Insert(mobile, "");
}
reader.Close();
dataStream.Close();
resp.Close(); response.Data = null;
return toJson(response);
} [HttpGet]
public HttpResponseMessage verifyCode(string mobile, string code)
{
var response = new Response(); Random r = new Random();
int i = r.Next(, );
string Random = i.ToString(); TimeSpan ts = DateTime.Now - DateTime.Parse("1970-1-1");
string Timestamp = Convert.ToInt32(ts.TotalSeconds).ToString(); //以字节方式存储
byte[] data = Encoding.Default.GetBytes(Constant.APP_SECRET + Random + Timestamp);
System.Security.Cryptography.SHA1 sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
//得到哈希值
byte[] result = sha1.ComputeHash(data);
//转换成为字符串的显示
string Signature = BitConverter.ToString(result).Replace("-", ""); WebRequest request = WebRequest.Create("http://api.sms.ronghub.com/verifyCode.json");
request.Method = "POST";
string postData = "sessionId="+ context.Cache[mobile] +"&code=" + code;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("App-Key", Constant.APP_KEY);
request.Headers.Add("Nonce", Random);
request.Headers.Add("Timestamp", Timestamp);
request.Headers.Add("Signature", Signature);
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, , byteArray.Length);
dataStream.Close();
WebResponse resp = request.GetResponse();
dataStream = resp.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
ReturnJson _ReturnJson = jsonSerializer.Deserialize<ReturnJson>(responseFromServer);
var rtnCode = _ReturnJson.code;
var rtnSuccess = _ReturnJson.success;
if (rtnCode == )
{
response.Code = ;
response.Message = "手机号验证成功!";
}
else
{
response.Code = ;
response.Message = "手机号验证失败!";
}
reader.Close();
dataStream.Close();
resp.Close(); response.Data = rtnSuccess;
return toJson(response);
}
}
}

融云发送手机短信验证短信(.net版本)的更多相关文章

  1. Java实现发送手机验证码功能(短信+语音)

    利用第三方平台可以实现发送手机短信验证码和语音验证码的功能,本文使用框架是struts2+spring+hibernate,现就action层给出核心代码功能. public class Verify ...

  2. Python使用腾讯云-短信服务发送手机短信

    目前[腾讯云短信]为客户提供[国内短信].[国内语音]和[海外短信]三大服务,腾讯云短信SDK支持以下操作: 国内短信 国内短信支持操作: • 指定模板单发短信 • 指定模板群发短信 • 拉取短信回执 ...

  3. [android]ShareSDK——内容分享和短信验证

    前言 新版本号ShareSDK的分享和短信验证,按官网的文档,都须要加入一个<Activity></Activity>标签,而分享和短息验证的这个标签内容都一样.会冲突. 解决 ...

  4. ASP.NET MVC+Bootstrap 实现短信验证

    短信验证大家都已经非常熟悉了,基本上每天都在接触手机短信的验证码,比方某宝,某东购物.站点注冊,网上银行等等,都要验证我们的手机号码真实性.这样做有什么优点呢. 曾经咱们在做站点的时候.为了提高用户注 ...

  5. nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token

    最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...

  6. C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制

    https://blog.csdn.net/IT_xiao_guang_guang/article/details/104299983 前言   1.发送手机验证码用的是网建的SMS接口(http:/ ...

  7. 基于融云的IM通讯

    一.业务场景 项目的发展需要吧原来自己的写的通讯换为第三方的,多家对比后选择了融云IM通讯,项目要实现的功能这要是单聊.群聊.聊天室.发送的内容为文字.图片.文件.语音通话与视频通话.听起来挺复杂的我 ...

  8. Luffy之注册认证(容联云通讯短信验证)

    用户的注册认证 前端显示注册页面并调整首页头部和登陆页面的注册按钮的链接. 注册页面Register,主要是通过登录页面进行改成而成. 先构造前端页面 <template> <div ...

  9. 阿里云短信验证_基于阿里云OpenAPI实现

    阿里云短信服务 背景简介: 短信验证以及短信通知,目前已经应用的非常广泛,最近因项目需要,需要将原来的短信接口换成阿里云的的短信服务,原项目集成的短信服务能够实现短信的发送以及短信的验证整个过程,简单 ...

随机推荐

  1. php上传zip文件在线解压文件在指定目录下,CI框架版本

    我从网上找的文件php在线解压zip压缩文件 文件为jy.php可以直接执行,但是怎样将其加到CI框架中呢?? jy.php文件 <?php header("content-Type: ...

  2. HTML学习(四)样式

    通过使用 HTML4.0,所有的格式化代码均可移出 HTML 文档,然后移入一个独立的样式表. 实例:例1:本例演示如何使用添加到 <head> 部分的样式信息对 HTML 进行格式化.& ...

  3. codeforces #309 DIV2

    这场并没有做,做的赛后的,太晚了时间,中午做了两题,稍微贴一下,剩余的题目本周争取补完 A题: 链接:http://codeforces.com/contest/554/problem/A #incl ...

  4. js去除字符串空格

    str.replace(/\s+/g,""); str.replace(/\s|\xA0/g,""); empName=empName.replace(/^\s ...

  5. iOS开发实现Label中多颜色多字体

     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(8, 100, 300, 30)]; label.textColor = wor ...

  6. 【转】C/CPP之static

    静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值. 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见.用法1:函数内部声明 ...

  7. 转:HTTPS 升级指南

    上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效. 为了升级到 HTTP/2 协议,必须先启用 HTTPS.如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我 ...

  8. js 回车触发事件

    <script type="text/javascript" language=JavaScript > document.onkeydown=function(eve ...

  9. AtCoder Beginner Contest 052 ABCD题

    A - Two Rectangles Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement The ...

  10. UVa 10360 - Rat Attack

    题目大意:有一个1025*1025的矩阵,每个矩阵元素保存这个点上老鼠的数量.现有一种气体炸弹,能覆盖“半径”为d的矩形,在这个范围内可以消灭所有的老鼠,让你找出合适的放置炸弹的位置使的消灭的老鼠数量 ...