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( ...
随机推荐
- 教材配套PPT初稿
1-10章初稿,基本完整.有些粗糙,后面可能会稍作调整. 附更新情况如下: 1.增加了第10章内容: 2.第5章增加了一些内容: 3.第3章内容部分更新: 4.增加了第8-9章内容. 订正:更新了第8 ...
- kafkaAPI
使用方法见官网API介绍: https://kafka.apache.org/22/javadoc/index.html?org/apache/kafka/clients/consumer/Kafka ...
- esp32(M5STACK) ARDUINO开发环境搭建(ubuntu)
首先去官网下载arduino https://www.arduino.cc/en/main/software 由于国产链接下载慢的缘故,所以可以采用百度网盘的方式进行下载,具体下载方法 ...
- 关于vcruntime140D.dll丢失问题
电脑磁盘占用率100%,又检测出硬盘磁道坏了,要么装win7,要么换个SSD,无奈重装环境. 遇到这个问题,之前的电脑就遇到过,网上交的下载这个文件装到C盘Windows的SysWOW64,对于实验室 ...
- 搭建rsync服务(端口号873)
rsync详细参数 1.-v,--verbose 详细模式输出,传输是的进度信息 2.-z,--compress 传输是进行压缩以提高传输效率,--comperess -level = NUM可以按级 ...
- CentOS7下安装docker(Docker系列1)
CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...
- JavaScript基础的记录
一.JavaScript的六种基本类型: 基本数据类型: String.Number.Boolean.Null.Undefined 引用数据类型: Object 二.强制类型转换: 主要指将其他的数据 ...
- Spring Boot-整合Mybatis(五)
原始的整合方式 1.添加依赖 <!--mybatis起步依赖--> <dependency> <groupId>org.mybatis.spring.boot< ...
- JVM学习-jvm结构(一)
java是跨平台的语言.一次编译多端使用.究竟是如何实现的呢 1.首先编译器会将java 文件编译成class文件.然后在不同的平台使用对应的虚拟机.不同虚拟机的内装载系统将class文件转换平台能执 ...
- How to run Java main class and pass application arguments in Maven?
原文: http://www.logicbig.com/how-to/maven/mvn-java-exec-args/ --------------------------------------- ...