C# 调用短信接口

时间:2022-08-31 07:36:03
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# 调用短信接口的更多相关文章

  1. 发送短信验证码及调用短信接口与C&num; 后台 post 发送

    #region 调用短信接口 public ActionResult Mobile(string Tel)//调用接口 { Random rm = new Random(); int i; strin ...

  2. asp调用短信接口实现用户注册

    前几天做一个asp语言开发的网站需要实现用户注册短信验证功能,就研究了一下如何实现,简单给大家分享下调用过程. 首先需要找到一个第三方短信接口,当时用的是动力思维乐信的短信接口. 首先需要先注册个动力 ...

  3. C&num;调用短信接口&lpar;通过简单的工厂模式整合多个短信平台&rpar;

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

  4. http请求,HttpClient,调用短信接口

    项目中安全设置找回密码的功能,需要通过发送短信验证绑定手机,通过绑定的手机号验证并重新设置密码. 因为项目是通过maven管理的,所以需要在pom.xml文件中引入jar包, maven引入的jar包 ...

  5. nginx限制IP恶意调用短信接口处理方法

    真实案例: 查看nginx日志,发现别有用心的人恶意调用API接口刷短信: /Jun/::: +] "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) ...

  6. java代码实现调用短信接口,发送短信验证。

    一.代码示例 package com.aaa.zxf.login; import org.apache.commons.httpclient.HttpClient; import org.apache ...

  7. 调用短信接口&comma;先var&lowbar;dump&lpar;&rpar;看数据类型是object需要json&lowbar;decode&lpar;json&lowbar;encode&lpar; &dollar;resp&rpar;&comma;true&rpar;转换成array

    返回的数据.先看类型,如果是object类型 先json_encode, 再json_decode,加true 转换成数组 $resp = $c->execute($req); var_dump ...

  8. asp&period;net mvc短信接口调用——阿里大于API开发心得

    互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短 ...

  9. 短信接口调用以及ajax发送短信接口实现以及前端样式

    我们短信api用的是云信使平台提供的非免费短信服务:官网提供的demo有两种,分别是function加其调用.class文件加其调用. 在这里我们用class文件加调用: 首先,ThinkPHP里面自 ...

随机推荐

  1. TCP&sol;IP协议(二)tcp&sol;ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  2. parent&comma;parents和closest

    1.parent parent() 获得当前匹配元素集合中每个元素的父元素,使用选择器进行筛选是可选的. <ul id="menu" style="width:10 ...

  3. Linux主机硬盘的主要规划

    系统对于硬盘的需求跟刚刚提到的主机开放的服务有关,那么除了这点之外,还有没有其他的注意事项?当然有,那就是数据的分类与数据安全性的考虑,即当主机系统的硬件出现问题时,你的档案数据能否安全的保存. 前篇 ...

  4. ExtJS组件的xtype属性列表

    ExtJS的应用界面是由很多小部件组合而成的,这些小部件被称作“组件(Component)”,所有组件都是Ext.Component的子类,Ext.Component提供了生命周期管理包括初始化.渲染 ...

  5. JavaScript 标识符

    JavaScript 标识符 和其他任何编程语言一样,JavaScript 保留了一些标识符为自己所用. JavaScript 同样保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在以后 ...

  6. java&lowbar;内存划分

    内存划分

  7. w7关闭休眠增加C盘容量

    http://jingyan.baidu.com/article/f3ad7d0fc0992e09c2345b51.html powercfg -h off,即可关闭休眠功能 powercfg -h ...

  8. struct stat结构体简介

    在使用这个结构体和方法时,需要引入: <sys/types.h> <sys/stat.h> struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结 ...

  9. day17--模块之time、calendar、datetime、sys、os、os&period;path、json、pickle、random

    一.时间模块(time,calendar,datetime) 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00 ...

  10. C&plus;&plus; 类占用空间计算方式

    1.一个类占用的空间主要是属性占用空间,而成员函数一般不占用空间,但是虚函数占用空间,需要说明的是,无论多少个虚函数,只要占用4个字节即可,也就是索引指向一个虚拟表的首位置.另外需要说明的是占用空间都 ...