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( ...
随机推荐
- ubuntu 16.04 安装QT问题
使用 sudo sh ./**.run 有错误: 增加 文件的可运行权限: sudo chmod +x Qt.run 直接运行: ./Qt.run 可完成安装
- 使用Visio—UML画类图
在一个VS工程中,由于类的个数较多,而参数描述不是特别清晰.若此工程的生命周期较长,则有必要对工程进行完整分析,给出完整的文档.需要画出类图,并对每个成员进行详细描述. 一.画出类图 在VIsio中, ...
- Arduino控制DTH11模块
一.接线原理图 二.实物图 三.事例代码 下载 git clone https://github.com/adafruit/DHT-sensor-library.git 放到 arduino-1.6. ...
- mvc重定向
出处 : https://www.cnblogs.com/lgxlsm/p/5441149.html .重定向方法:Redirect / RedirectToAction / RedirectToRo ...
- python tips:matplotlib保存多张图片时,图片会相互叠加
问题: 使用matplotlib的pyplot.savefig保存图片时,前面的图会不断叠加到后面的图中. 原因: savefig方法保存图片并不会重置画布,所以导致图片的相互叠加. 解决方法: 保存 ...
- PAT_A1120#Friend Numbers
Source: PAT A1120 Friend Numbers (20 分) Description: Two integers are called "friend numbers&qu ...
- 6.2 C# 2:利用 yield 语句简化迭代器
class Program { static void Main(string[] args) { object[] values = new object[] { "a", &q ...
- Hzoi 2018.2.11多边形 区间DP
给定一个由N个顶点构成的多边形,每个顶点被赋予一个整数值,而每条边则被赋予一个符号:+(加法运算)或者*(乘法运算),所有边依次用整数1到N标识. 一个多边形的图形表示 首次移动,允许将某条边删除: ...
- Java 8 集合不完全一览
JDK 8 List 名称 线程安全 数据结构 允许 null 默认初始容量 扩容策略 备注 ArrayList 不安全 数组 允许 10 1.5 * old LinkedList 不安全 双链表 允 ...
- css 陌生属性
记录一些我之前没见过属性 1.width:100vh 100vh 2.min-height:calc(100vh + 51px);cale 3.:nth-child nth-child 和 :n ...