#region 调用短信接口
public ActionResult Mobile(string Tel)//调用接口
{
Random rm = new Random();
int i;
string str = string.Empty;
for (int p = ; p < ; p++)
{
i = Convert.ToInt32(rm.NextDouble() * );
str += i;
}
System.Web.HttpContext.Current.Session["Code"] = str;
//string stringSendResult = SendMobileCode(Tel, str);//方法一
string stringSendResult2 = Send(Tel, "验证码是:" + str);
return Json(true, JsonRequestBehavior.AllowGet);//短信发送成功
}
#endregion
#region 方法一(可能有些问题,走不通的先试用方法二)
public string SendMobileCode(string Mobile, string number)
{
if (string.IsNullOrEmpty(Mobile)) return "发送失败";
var str = "您的验证码为:" + number + ",5分钟有效,请尽快认证";
str = HttpUtility.UrlEncode(str, Encoding.GetEncoding("gb2312"));
string Chuo = DateTime.Now.ToString("yyyyMMddHHmmss");//时间戳
string MD5Chuo = "wdyzmwdyzm@456321" + Chuo;//账号 + 密码 + 时间戳 的MD5
string sign = Encrypt(MD5Chuo);
var url = "http://这里是地址/接口方法?参数1=send&参数2=111&时间戳=" + chuo + "&签名=" + sign + "&手机号=" + tel + "&发送内容=" + number + "&参数3=&参数4=";
var rst = (HttpWebRequest)WebRequest.Create(url);
var rsp = (HttpWebResponse)rst.GetResponse();
var reader = new StreamReader(rsp.GetResponseStream(), Encoding.GetEncoding("gb2312"));
reader.ReadToEnd();
reader.Close();
return number;
}
#endregion #region 方法二 #region
public string Send(string tel, string number)
{
string chuo = DateTime.Now.ToString("yyyyMMddHHmmss");//时间戳
string MD5s = "wdyzmwdyzm@456321" + chuo;//账号 + 密码 + 时间戳 的MD5
string sign = Encrypt(MD5s);
string posturl = "http://这里是地址/接口方法?参数1=send&参数2=111&时间戳=" + chuo + "&签名=" + sign + "&手机号=" + tel + "&发送内容=" + number + "&参数3=&参数4=";
return GetPage(posturl);//以post的形式发送出去
}
#endregion #region
public string GetPage(string posturl)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
//byte[] data = encoding.GetBytes(postData);
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(posturl) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";//post的形式
request.ContentType = "application/x-www-form-urlencoded";
//request.ContentLength = data.Length;
outstream = request.GetRequestStream();
//outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
catch (Exception ex)
{
string err = ex.Message;
//Response.Write(err);
//return string.Empty;
return err;
}
}
#endregion #endregion
ps:已简化

发送短信验证码及调用短信接口与C# 后台 post 发送的更多相关文章

  1. java后台通过Servlet给用户发送手机短信验证码,第一次写勿喷,欢迎转载

    短信验证码跟自己在Servlet画的验证码不一样,我们不用管短信验证码是怎么产生的,我们只需要关注如何调用短信验证码,在短信验证码里面添加 自己需要的随机数或者其他的内容. 现在直接上流程 第一步找一 ...

  2. spring boot:用redis+lua限制短信验证码的发送频率(spring boot 2.3.2)

    一,为什么要限制短信验证码的发送频率? 1,短信验证码每条短信都有成本制约, 肯定不能被刷接口的乱发 而且接口被刷会影响到用户的体验, 影响服务端的正常访问, 所以既使有图形验证码等的保护, 我们仍然 ...

  3. java实现注册的短信验证码

    最近在做只能净化器的后台用户管理系统,需要使用手机号进行注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 我们使用的是榛子云短信平台, 官网地址:http://smsow.zhe ...

  4. Web项目中手机注册短信验证码实现的全流程及代码

    最近在做只能净化器的后台用户管理系统,需要使用手机号进行注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 我们使用的是榛子云短信平台, 官网地址:http://smsow.zhe ...

  5. Android开发之短信验证码示例

    在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融 ...

  6. vue_drf之实现短信验证码

    一.需求 1,需求 我们在做网站开发时,登录页面很多情况下是可以用手机号接收短信验证码,然后实现登录的,那我们今天就来做一做这一功能. 伪代码: 进入登录页面,点击短信登录 输入手机号码,点击获取验证 ...

  7. thinkphp结合云之讯做短信验证码

    thinkphp结合云之讯做短信验证码先去云之讯注册账号 网址http://www.ucpaas.com/ 注册云之讯平台账号,即可免费获得10元测试费用测试够用啦 解压附件到 ThinkPHP\Li ...

  8. SpringSceurity(5)---短信验证码登陆功能

    SpringSceurity(5)---短信验证码登陆功能 有关SpringSceurity系列之前有写文章 1.SpringSecurity(1)---认证+授权代码实现 2.SpringSecur ...

  9. 云平台短信验证码通知短信java/php/.net开发实现

    一.本文目的 大部分平台都有一个接入发送短信验证码.通知短信的需求.虽然市场上大部分平台的接口都只是一个非常普通的HTTP-GET请求,但终归有需要学习和借鉴使用的朋友. 本文的初衷是主要提供学习便利 ...

随机推荐

  1. [LeetCode&Python] Problem 561. Array Partition I

    Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1 ...

  2. Unity打安卓包 Android 所有错误解决方案大全(几乎囊括所有打包错误 )

    Unity打包出错解决方案 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  3. CodeForces - 1093G:Multidimensional Queries (线段树求K维最远点距离)

    题意:给定N个K维的点,Q次操作,或者修改点的坐标:或者问[L,R]这些点中最远的点. 思路:因为最后一定可以表示维+/-(x1-x2)+/-(y1-y2)+/-(z1-z2)..... 所以我们可以 ...

  4. 蓝桥杯 BASIC-3:字母图形

      基础练习 字母图形   时间限制:1.0s   内存限制:256.0MB        问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCD ...

  5. 谨慎使用 FileInfo.Exists 实例方法,而是使用 File.Exists 静态方法替代

    如果你在代码中使用了 FileInfo.Exists 实例方法来判断一个文件是否存在,也许会发现此方法可能错误地判断来一个文件是否真的存在.这是一个坑. 本文将介绍坑的原因,并提供填坑的办法. 本文内 ...

  6. python 获取中文文件名的输出

    #coding:utf8 if __name__ == '__main__': srcfile = u"D:/测试路径/测试文件.txt" f = open(srcfile.enc ...

  7. 实习第一周第一天:接口 extends是继承类,implement是实现接口,原接口里面的方法填充,方法名也是不变,重写override是父类的方法名不变,把方法体给改了

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  8. smarty学习——高级知识

    1.Objects 对象 smarty允许通过模板访问PHP对象.有两种方式来访问它们.一种是注册对象到模板,然后通过类似于用户自定义函数的形式来访问它. 另一种方法给模板分配对象,然后通过访问其它赋 ...

  9. jquery选择器之属性过滤选择器详解

    代码如下: <style type="text/css">  /*高亮显示*/  .highlight{       } </style> 复制代码代码如下 ...

  10. vue-cli 构建项目中 config/index.js 文件解读

    // see http://vuejs-templates.github.io/webpack for documentation. var path = require('path') module ...