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中的行级锁,表级锁,页级锁
在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引 ...
- 探究如何永久更改Maven的Dynamic Web Project版本及pom.xml默认配置
一:问题 在用eclipse创建一个maven project (webApp)时,我们一般会要进行许多麻烦的配置,比如 1.更改Java jdk版本为1.7或1.8(默认1.5) 2.补全src/m ...
- MySQL定时备份数据库(全库备份)
一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...
- 微服务之:从零搭建ocelot网关和consul集群
介绍 微服务中有关键的几项技术,其中网关和服务服务发现,服务注册相辅相成. 首先解释几个本次教程中需要的术语 网关 Gateway(API GW / API 网关),顾名思义,是企业 IT 在系统边界 ...
- eclipse maven设置
eclipse 4.4以上版本集成了maven,只需配置一下即可,如果你的eclipse 没有安装maven,可以参考这个文章.http://marketplace.eclipse.org/conte ...
- eclipse maven 常见问题解决方案
一.eclipse集成与设置 传送门:http://www.cnblogs.com/tweet/p/7602044.html 二.创建maven webapp工程,报错 报错信息:Could not ...
- Vue(三)之前端路由
01-前端路由 1.前端路由的实现原理 vue+vue-router 主要来做单页面应用(Single Page Application) 为什么我们要做单页面应用? (1)传统的开发方式 url改变 ...
- Mysql权限操作、用户管理、密码操作
Mysql的权限 mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表. mysql权限表的验证过程为: 先从user表中的Host,Use ...
- 从Mongo导出数据库到Excel
在MongoDB的安装目录的bin文件夹下打开命令行: ./mongoexport -d kugou_db -c songs -f rank,singer,song,time --type=csv - ...
- js刷新界面前事件onbeforeunload
这个方法的作用是防止填写信息时不小心按了刷新(F5,刷新界面,返回). 目前能实现这个需求的只有这个方法. 具体代码如下: 1.首先在body添加 onbeforeunload 这个事件 <bo ...