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( ...
随机推荐
- Higher-Order Functions and Lambdas
https://kotlinlang.org/docs/reference/lambdas.html
- H3C交换机配置常用命令(转)
1.配置文件相关命令 [Quidway]display current-configuration //显示当前生效的配置 [Quidway]display saved-configuration / ...
- Scrapy处理200-300范围之外的响应代码
HttpErrorMiddleware 类scrapy.spidermiddlewares.httperror.HttpErrorMiddleware 过滤掉不成功(错误)的HTTP响应,以便蜘蛛不必 ...
- sql server备份策略
https://www.cnblogs.com/fengzongming/archive/2018/08/29/9530616.html
- shell脚本编程及bash特性
bash特性及bash脚本编程初步 终端,附着在终端的接口程序; GUI: KDE,GNome,Xfce CLI: /etc/shells bash的特性: 命令行展开: ~,{} 命令别名: ali ...
- python第九周:paramiko多线程、队列
1.paramiko模块 用处:连接远程服务器并执行相关操作 使用方法: SSHClient:连接远程服务器并执行基本命令 import paramiko #创建SSH对象 ssh = paramik ...
- C#关键字的个人理解与注释
C#关键字注释:abstract:抽象as:类型转换(返回转换结果)base:基类bool:布尔类型break:条件中断语句byte:字节case:条件语句catch:异常捕获后执行char:16 位 ...
- 【ACM】hdu_1095_A+BVII_201307261740
A+B for Input-Output Practice (VII)Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/327 ...
- POJ 2607
一次FLOYD,再枚举. 注意题目要求的输出是什么哦. #include <iostream> #include <cstdio> #include <cstring&g ...
- HDU 1576 A/B(扩展欧几里德变形)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但因为A非常大,我们仅仅给出n ...