C# 调用短信接口
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks; namespace SendSMS
{
public class Program
{
static void Main(string[] args)
{
Sendsms.Send();
Console.ReadKey();
}
}
public class SendSmsBase
{
public string Name { get; set; } //用户名
public string Key { get; set; } //接口秘钥
public virtual string SendSmsInfo(string smsMob, string smsText)
{
return string.Empty;
} }
public class WJSendSms : SendSmsBase
{
public WJSendSms()
{
Name = "用户名"; //用户名
Key = "密钥"; //接口秘钥
}
public override string SendSmsInfo(string smsMob, string smsText)
{
string url = "http://utf8.sms.webchinese.cn/?Uid=" + Name + "&key=" + Key + "&smsMob=" + smsMob + "&smsText=" + smsText;
string strRet = null;
if (url == null || url.Trim().ToString() == "")
{
return strRet;
}
string targeturl = url.Trim().ToString();
try
{
HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
hr.Method = "GET";
hr.Timeout = * * ;
WebResponse hs = hr.GetResponse();
Stream sr = hs.GetResponseStream();
StreamReader ser = new StreamReader(sr, Encoding.Default);
strRet = ser.ReadToEnd();
}
catch (Exception ex)
{
strRet = null;
}
return GetResult(strRet);
}
/// <summary>确认返回信息 </summary>
public string GetResult(string strRet)
{
int result = ;
try
{
result = int.Parse(strRet);
switch (result)
{
case -:
strRet = "没有该用户账户";
break;
case -:
strRet = "接口密钥不正确,不是账户登陆密码";
break;
case -:
strRet = "MD5接口密钥加密不正确";
break;
case -:
strRet = "账户余额不足";
break;
case -:
strRet = "该用户被禁用";
break;
case -:
strRet = "短信内容出现非法字符";
break;
case -:
strRet = "手机号格式不正确";
break;
case -:
strRet = "手机号码为空";
break;
case -:
strRet = "短信内容为空";
break;
case -:
strRet = "短信签名格式不正确,接口签名格式为:【签名内容】";
break;
case -:
strRet = "IP限制";
break;
default:
strRet = "发送短信数量:" + result;
break;
}
}
catch (Exception ex)
{
strRet = ex.Message;
}
return strRet;
}
}
public class DXTSMSsend : SendSmsBase
{
public DXTSMSsend()
{
Name = "用户名";
Key = "密钥";
}
public override string SendSmsInfo(string mobile, string content)
{
string PostUrl = "http://sms.106jiekou.com/utf8/sms.aspx";
string returncode = string.Empty;
string postStrTpl = "account={0}&password={1}&mobile={2}&content={3}";
UTF8Encoding encoding = new UTF8Encoding();
byte[] postData = encoding.GetBytes(string.Format(postStrTpl, Name, Key, mobile, content));
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
myRequest.ContentLength = postData.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(postData, , postData.Length);
newStream.Flush();
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
if (myResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
returncode = reader.ReadToEnd(); }
else
{
returncode = "";
}
return GetResult(returncode);
}
public string GetResult(string returncode)
{
string returntext = string.Empty;
switch (Convert.ToInt32(returncode))
{
case :
returntext = "发送成功";
break;
case :
returntext = "验证失败";
break;
case :
returntext = "手机号码格式不正确";
break;
case :
returntext = "会员级别不够";
break;
case :
returntext = "内容未审核";
break;
case :
returntext = "内容过多";
break;
case :
returntext = "账户余额不足";
break;
case :
returntext = "Ip受限";
break;
case :
returntext = "手机号码发送太频繁,请换号或隔天再发";
break;
case :
returntext = "帐号被锁定";
break;
case :
returntext = "手机号发送频率持续过高,黑名单屏蔽数日";
break;
case :
returntext = "系统升级";
break;
default:
returntext = "访问失败";
break;
}
return returntext; }
}
public class SendSmsFactory
{
public static SendSmsBase CreateFactory(string className)
{
SendSmsBase sendsms = null;
switch (className)
{
case "WJSendSms":
sendsms = new WJSendSms();
break;
case "DXTSMSsend":
sendsms = new DXTSMSsend();
break;
default:
sendsms = null;
break; }
return sendsms;
}
}
public class Sendsms
{
public static void Send()
{
SendSmsBase SmsClass = new SendSmsBase();
string content = "【XX】验证码:6666,一天内提交有效,如不是本人操作请忽略!";
SmsClass = SendSmsFactory.CreateFactory("DXTSMSsend");
string returncode=SmsClass.SendSmsInfo("", content);
if (returncode == "账户余额不足")
{ SmsClass = SendSmsFactory.CreateFactory("WJSendSms");
SmsClass.SendSmsInfo("", content);
}
Console.WriteLine(returncode);
}
}
}
C# 调用短信接口的更多相关文章
- 发送短信验证码及调用短信接口与C# 后台 post 发送
#region 调用短信接口 public ActionResult Mobile(string Tel)//调用接口 { Random rm = new Random(); int i; strin ...
- asp调用短信接口实现用户注册
前几天做一个asp语言开发的网站需要实现用户注册短信验证功能,就研究了一下如何实现,简单给大家分享下调用过程. 首先需要找到一个第三方短信接口,当时用的是动力思维乐信的短信接口. 首先需要先注册个动力 ...
- C#调用短信接口(通过简单的工厂模式整合多个短信平台)
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- http请求,HttpClient,调用短信接口
项目中安全设置找回密码的功能,需要通过发送短信验证绑定手机,通过绑定的手机号验证并重新设置密码. 因为项目是通过maven管理的,所以需要在pom.xml文件中引入jar包, maven引入的jar包 ...
- nginx限制IP恶意调用短信接口处理方法
真实案例: 查看nginx日志,发现别有用心的人恶意调用API接口刷短信: /Jun/::: +] "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) ...
- java代码实现调用短信接口,发送短信验证。
一.代码示例 package com.aaa.zxf.login; import org.apache.commons.httpclient.HttpClient; import org.apache ...
- 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array
返回的数据.先看类型,如果是object类型 先json_encode, 再json_decode,加true 转换成数组 $resp = $c->execute($req); var_dump ...
- asp.net mvc短信接口调用——阿里大于API开发心得
互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短 ...
- 短信接口调用以及ajax发送短信接口实现以及前端样式
我们短信api用的是云信使平台提供的非免费短信服务:官网提供的demo有两种,分别是function加其调用.class文件加其调用. 在这里我们用class文件加调用: 首先,ThinkPHP里面自 ...
随机推荐
- Mysql数据库表被锁定处理
1.查进程,查找被锁表的那个进程的ID show processlist; command 为waitting的就是锁住的表,info为执行某条语句的信息,id为进程. 2.kill掉锁表的进程ID ...
- http基本get和post请求
get请求: private static void httpGet(){ BufferedReader br = null; HttpURLConnection conn = null; try { ...
- 深入理解消息中间件技术之RabbitMQ服务
什么叫消息队列? 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象. 消息队列(Message Queue)是一种应用间的通信方式, ...
- Windows Community Toolkit 4.0 - DataGrid - Overview
概述 Windows Community Toolkit 4.0 于 2018 月 8 月初发布:Windows Community Toolkit 4.0 Release Note. 4.0 版本相 ...
- Entity Framework Core系列之什么是Entity Framework Core
前言 Entity Framework Core (EF Core)是微软推荐的基于.NET Core framework的应用程序数据访问技术.它是轻量级,可扩展并且支持跨平台开发.EF Core是 ...
- Kickstart Practice Round 2017---A
Problem The Constitution of a certain country states that the leader is the person with the name con ...
- sql定时备份
老规矩,直接上代码: ) set @name='C:\Backup\MyStudy_'+ ),)+'.bak' BACKUP DATABASE[MyStudy]TO DISK=@name WITH N ...
- mysql_单表查询
单表查询 比较符 当在子句中使用 <. >. <=. >=. <>或 !=时,字段的名字不加引号.如果使用引号,则查询出的结果为空,并且不会报错. ; 等号 当在子 ...
- 【Python3练习题 015】 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?
a = [100] #每个‘反弹落地’过程经过的路程,第1次只有落地(100米) h = 100 #每个‘反弹落地’过程,反弹的高度,第1次为100米 print('第1次从%s米高落地,走过%s ...
- 区块链教程(二):比特币、区块链、以太坊、Hyperledger的关系
不知道大家喜不喜欢音乐! 朋克音乐:诞生于七十年代中期,一种源于六十年代车库摇滚和前朋克摇滚的简单摇滚乐.它由一个简单悦耳的主旋律和三个和弦组成,经过演变,朋克已经逐渐脱离摇滚,成为一种独立的音乐,朋 ...