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操作系统的目录结构
/:根目录,是所有目录的绝对路径的起始点.一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin (类似的还有/usr/bin) ...
- Java同步的三种实现方式
1.使用synchronized关键字修饰类或者代码块: 2.使用Volatile关键字修饰变量: 3.在类中加入重入锁 举例子:多个线程在处理一个共享变量的时候,就会出现线程安全问题.(相当于多个窗 ...
- NYIST 99 单词拼接
单词拼接时间限制:3000 ms | 内存限制:65535 KB难度:5 描述给你一些单词,请你判断能否把它们首尾串起来串成一串.前一个单词的结尾应该与下一个单词的道字母相同.如 aloha dog ...
- Nikita and stack
Nikita and stack time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- VNC ( Virtual Network Computing )
VNC is used to display an X windows session running on another computer. Unlike a remote X connectio ...
- 洛谷—— P2690 接苹果
https://www.luogu.org/problem/show?pid=2690 题目背景 USACO 题目描述 很少有人知道奶牛爱吃苹果.农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵 ...
- 我要带徒弟学JAVA架构 ( 写架构,非用架构 )
80元,当然我不觉得我带的徒弟比花了1万多在培训班学习的学生差,你努力了.会比他们出色的多.等你学有所成.相同能够成为jeecg核心成员之中的一个.一起构建Java学习平台.你也能够成为非常好的师傅. ...
- Dagger2使用攻略
Dagger2使用攻略 Dagger 2 是 Square 的 Dagger 分支,是一种依赖注入框架.眼下由 Google 接手进行开发,Dagger2是使用代码自己主动生成和手写代码来实现依赖注入 ...
- 拒绝switch,程序加速之函数指针数组
先看一个使用switch语句的程序: #include <stdio.h> #include <time.h> //加法 int add(int a,int b) { retu ...
- 扩展欧几里德 poj1061 青蛙的约会
扩展欧几里德很经典.可是也有时候挺难用的.一些东西一下子想不明确.. 于是来了一个逆天模板..仅仅要能列出Ax+By=C.就能解出x>=bound的一组解了~ LL exgcd(LL a, LL ...