C#调用SMS短信接口,轻松搞定发送短信的任务。。。。
首先我们需要去这里http://sms.webchinese.cn/申请一个账号和短信接口秘钥,在该网址下有许多语言的demo介绍,下面我主要为大家贴一个C#中的Helper类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Text;
using System.Net;
using System.IO; namespace StudyProgram.LeiKu
{
public class MessageHelper
{
private string url = @"http://utf8.api.smschinese.cn/";
private string userid = "";
private string key = "";//秘钥
private string smsMob;
private string smsText; /// <summary>
/// 带参构造函数
/// </summary>
/// <param name="isMD5">是否需要MD5加密</param>
/// <param name="userid">申请的用户名</param>
/// <param name="key">申请的秘钥</param>
/// <param name="mob">发送的手机(多个需要以','连接)</param>
/// <param name="text">信息内容(注意签名格式【XX网】)</param>
public MessageHelper(bool isMD5, string userid, string key, string mob, string text)
{
this.userid = "/?Uid=" + userid;
this.key = isMD5 ? "&KeyMD5=" + GetMD5Str(key) : "&Key=" + key;
this.smsMob = "&smsMob=" + mob;
this.smsText = "&smsText=" + text;
} //MD5加密
private string GetMD5Str(string str)
{
MD5 md5 = new MD5CryptoServiceProvider();
StringBuilder sbStr = new StringBuilder();
byte[] buffer = Encoding.Default.GetBytes(str);
byte[] dataBuff = md5.ComputeHash(buffer);//计算指定字符数组的哈希值 foreach (byte d in dataBuff)
sbStr.Append(d.ToString("x2")); return (sbStr + "").ToUpper();
} private string GetResponse()
{
var targetUrl = url + userid + key + smsMob + smsText;
var res = "";
try
{
HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targetUrl);
hr.Method = "GET";
hr.Timeout = * * ;//30分钟超时
WebResponse hs = hr.GetResponse();
Stream sr = hs.GetResponseStream();
StreamReader ser = new StreamReader(sr, Encoding.Default);
res = ser.ReadToEnd();
}
catch (Exception ex)
{
res = ex.Message;
throw ex;
}
return res;
} private enum Result
{
没有该用户账户 = -,
接口密钥不正确 = -,
MD5接口密钥加密不正确 = -,
短信数量不足 = -,
该用户被禁用 = -,
短信内容出现非法字符 = -,
手机号格式不正确 = -,
手机号码为空 = -,
短信内容为空 = -,
短信签名格式不正确 = -,
IP限制 = -
} public string GetSendStr()
{
var res = "";
var response = GetResponse();
if (response != "")
{
int temp;
if (Int32.TryParse(response, out temp))
{
if (temp > )
res = string.Format("{0}条信息发送成功", temp);
else
res = Enum.GetName(typeof(Result), temp);
}
else res = "发送失败:" + response;
}
else res = "发送失败";
return res;
} }
}
调用方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ShortMessage
{
class Program
{
static void Main(string[] args)
{
StudyProgram.LeiKu.MessageHelper msh = new StudyProgram.LeiKu.MessageHelper(true, "申请用户名", "申请的秘钥", "", "验证码:无敌 【华哥】");
var res = msh.GetSendStr();
Console.WriteLine(res);
Console.ReadLine();
}
}
}
C#调用SMS短信接口,轻松搞定发送短信的任务。。。。的更多相关文章
- iOS开发之调用系统打电话发短信接口以及程序内发短信
在本篇博客开头呢,先说一下写本篇的博客的原因吧.目前在做一个小项目,要用到在本应用程序内发验证码给其他用户,怎么在应用内发送短信的具体细节想不大起来了,于是就百度了一下,发现也有关于这方面的博客,点进 ...
- 【微服务】之五:轻松搞定SpringCloud微服务-调用远程组件Feign
上一篇文章讲到了负载均衡在Spring Cloud体系中的体现,其实Spring Cloud是提供了多种客户端调用的组件,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使 ...
- 【微服务】之四:轻松搞定SpringCloud微服务-负载均衡Ribbon
对于任何一个高可用高负载的系统来说,负载均衡是一个必不可少的名称.在大型分布式计算体系中,某个服务在单例的情况下,很难应对各种突发情况.因此,负载均衡是为了让系统在性能出现瓶颈或者其中一些出现状态下可 ...
- 几行c#代码,轻松搞定一个女大学生
几行c#代码,轻松搞定一个女大学生 的作业... 哈哈,标题党了哈,但是是真的,在外面敲代码,想赚点外快,接到了一个学生的期末考试,是一个天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找 ...
- 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!
摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...
- 【转】轻松搞定FTP之FlashFxp全攻略
转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融 ...
- 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul
通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...
- Python高级特性: 12步轻松搞定Python装饰器
12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则: http://python.jobbole.com/84151/ 基本上一开始很难搞定python的装 ...
- 跨域 - jsonp轻松搞定跨域请求
1.jsonp轻松搞定跨域请求 vue中使用axios,遇到跨域我就蒙逼了.第一次真正意义上的尝试使用jsonp js中用 var myscript = document.createElement( ...
随机推荐
- 错误 RC1015: 无法打开包含文件 'XTToolkitPro.rc'
XtremeToolkitPro作为VC++/MFC平台下目前最流行的GUI界面库之一,安装和使用都很方便.不过,在实际使用中还是碰到许多问题.如果在编译工程时只显示一个错误:RC1015: 无法打开 ...
- structure vs class in swift language
Both class and structure can do: Define properties to store values Define methods to provide functio ...
- js 验证文件格式和大小
<script> $('#btnSearch').click(function(){ // alert("000");// fileElem = document.ge ...
- C# MVC 获得程序运行路径
string filePath = System.Web.HttpContext.Current.Request.MapPath("~/Upload"); //由虚拟路径指定的服务 ...
- element ui table(表格)点击一行展开
element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染. element ui表格中有一个功能是展开行,在2.0版本官网例子中,只可以点击 ...
- VS 2017 统计项目代码总行数
编辑 → 查找和替换 → 在文件中的查找,打开查找窗口 填入正则表达式 ^b*[^:b#/]+.*$ 查找范围选“整个解决方案”,勾选上“使用正则表达式” 如果要限制文件类型,就填上要查找的文件类型 ...
- Noip 2015 练习
子串 传送门 Solution \(f[i][j][k]\)表示A到i,B到j第k个子串的答案 \(g[i][j][k]\)表示A到i,B到j第k个子串且A[i]一定使用 \(g[i][j][k]=( ...
- Keil
Keil C51 V9.00 即09年发布的最新版本uVision 4,版本外观改变比较大,可以使用以前的注册文件.如果全新安装,在VISTA或者WIN 7系统下,请使用管理员方式运行,然后注册即可无 ...
- 图片base64格式转为file文件类型上传方法
日常使用文件上传方式,都是通过input type='file'的文件选择框进行文件上传.但是会通过其他交互方式等到图片的base64格式进行上传.具体情况如下示意: 在项目开发中,需要进行照片采集, ...
- Solr数据不同步
Solr配置了集群,本地有253和254,2个独立的Solr服务. 同一个页面的图片,刷新2次,图片地址不一样,最后查明,后台数据源Solr1和Solr2的数据不一致. 第1步推测:本地缓存, ...