DEMO:Message/Send

原文链接

概览

  • 支持.Net版本:2.0以上
  • 依赖三方库 Newtonsoft.Json.dll

代码示列

using System;
using System.Text;
using System.Net;
using System.IO;
using System.Collections.Generic;
using System.Web;
using System.Security.Cryptography;
using Newtonsoft.Json.Linq;
namespace SUBMAILDEMO
{public class MessageSendDemo{private const string API_MessageSend = "https://api.mysubmail.com/message/send.json";private const string API_Timestamp = "https://api.mysubmail.com/service/timestamp.json";public void Send(){string appid = "596xx";string appkey = "bf928d0116exxxdcd39ad58e2d7f";string to = "176xxxx5149";string content = "【xxx】你好,你的验证码是2257";string sign_type = "md5";             //加密方式有normal,md5,sha1string sign_version = "2";Dictionary<string, string> d = new Dictionary<string, string>();d.Add("appid", appid);d.Add("to", to);//如果不使用加密方式或者signature传normal则signature参数传入appkey的值if (sign_type.Equals("md5") || sign_type.Equals("sha1")){string timestamp = JObject.Parse(HttpGet(API_Timestamp))["timestamp"].ToString();d.Add("sign_type", sign_type);d.Add("timestamp", timestamp);d.Add("sign_version", sign_version);if (sign_type.Equals("md5")){d.Add("signature", GetMD5Signature(FormatRequest(d), appid, appkey));}else{d.Add("signature", GetSHA1Signature(FormatRequest(d), appid, appkey));}}else{d.Add("signature", appkey);}d.Add("content", content);string response = Httppost(API_MessageSend, d);Console.WriteLine(response);}//http post请求public string Httppost(string url, Dictionary<string, string> parameters){HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;//创建请求对象request.Method = "POST";//请求方式request.ContentType = "application/x-www-form-urlencoded";//链接类型//构造查询字符串if (!(parameters == null || parameters.Count == 0)){StringBuilder buffer = new StringBuilder();bool first = true;foreach (string key in parameters.Keys){if (!first){buffer.AppendFormat("&amp;{0}={1}", HttpUtility.UrlEncode(key, Encoding.UTF8), HttpUtility.UrlEncode((string)parameters[key], Encoding.UTF8));}else{buffer.AppendFormat("{0}={1}", HttpUtility.UrlEncode(key, Encoding.UTF8), HttpUtility.UrlEncode((string)parameters[key], Encoding.UTF8));first = false;}}Console.WriteLine("requestParam:" + buffer.ToString());byte[] data = Encoding.UTF8.GetBytes(buffer.ToString());//写入请求流using (Stream stream = request.GetRequestStream()){stream.Write(data, 0, data.Length);stream.Close();}}HttpWebResponse hwp = request.GetResponse() as HttpWebResponse;string response = GetResponseString(hwp);hwp.Close();return response;}//获取服务器时间戳public string HttpGet(string url){HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;//创建请求对象request.Method = "GET";//请求方式 request.ContentType = "application/x-www-form-urlencoded";HttpWebResponse hwp = request.GetResponse() as HttpWebResponse;string response = GetResponseString(hwp);hwp.Close();return response;}public string GetResponseString(HttpWebResponse webresponse){using (Stream s = webresponse.GetResponseStream()){StreamReader reader = new StreamReader(s, Encoding.UTF8);return reader.ReadToEnd();}}//加密参数升序public string FormatRequest(Dictionary<string, string> data){StringBuilder builder = new StringBuilder();if (data.Count > 0){List<KeyValuePair<string, string>> lst = new List<KeyValuePair<string, string>>(data);lst.Sort(delegate (KeyValuePair<string, string> s1, KeyValuePair<string, string> s2){return s1.Key.CompareTo(s2.Key);});foreach (KeyValuePair<string, string> kvp in lst){if (kvp.Value != null){builder.Append(string.Format("{0}={1}&amp;", kvp.Key, kvp.Value));}}}string formatData = builder.ToString();Console.WriteLine(formatData);if (formatData.Length > 0){return formatData.Substring(0, formatData.Length - 1);}return null;}//获取md5加密后的签名字符串private string GetMD5Signature(string data, string appid, string appkey){string signStr = string.Format("{0}{1}{2}{3}{4}", appid, appkey, data, appid, appkey);MD5 md5 = new MD5CryptoServiceProvider();byte[] fromData = Encoding.GetEncoding("utf-8").GetBytes(signStr);byte[] targetData = md5.ComputeHash(fromData);StringBuilder sBuilder = new StringBuilder();for (int i = 0; i < targetData.Length; i++){sBuilder.Append(targetData[i].ToString("x2"));}return sBuilder.ToString();}//获取sha1加密后的签名字符串private string GetSHA1Signature(string data, string appid, string appkey){string signStr = string.Format("{0}{1}{2}{3}{4}", appid, appkey, data, appid, appkey);SHA1 sha1 = new SHA1CryptoServiceProvider();byte[] fromData = Encoding.GetEncoding("utf-8").GetBytes(signStr);byte[] targetData = sha1.ComputeHash(fromData);StringBuilder sBuilder = new StringBuilder();for (int i = 0; i < targetData.Length; i++){sBuilder.Append(targetData[i].ToString("x2"));}return sBuilder.ToString();}}
}

短信API接口demo示例-C#/Message/Send相关推荐

  1. 短信API接口demo示例-PHP/Message/XSend

    DEMO:Message/XSend 原文链接 概览 加密签名计算方法请参考createSignature.php. 代码示列 <?php/****************** 非加密请求 示例 ...

  2. 短信API接口demo示例-C#/Message/MultiXSend

    原文链接 #DEMO:Message/MultiXSend 概览 支持.Net版本:2.0以上 依赖三方库 Newtonsoft.Json.dll 代码示列 using System; using S ...

  3. 短信平台API接口demo示例-JAVA/Message/Send

    DEMO:Message/Send 原文链接 支持JDK版本:1.5以上 依赖的jar包:httpclient-4.5.3.jar.httpcore-4.4.14.jar.commons-loggin ...

  4. 【Python】创蓝253云通讯平台---国际短信API接口demo

    #!/usr/local/bin/python #-*- coding:utf-8 -*- # Author: jacky # Time: 14-2-22 下午11:48 # Desc: 短信http ...

  5. 【Python】创蓝253云通讯平台国际短信API接口DEMO

    #!/usr/local/bin/python #-*- coding:utf-8 -*- # Author: jacky # Time: 14-2-22 下午11:48 # Desc: 短信http ...

  6. 短信平台API接口demo示例-Node/SMS/Send

    DEMO: SMS/Send - 短信发送 原文链接 var request = require('request'); var crypto = require('crypto'); var app ...

  7. php创蓝253四要素认证_【PHP】创蓝253云通讯平台国际短信API接口demo

    PHP接口请求类 header("Content-type:text/html; charset=UTF-8"); /* * * 类名:ChuanglanSmsApi * 功能:创 ...

  8. 【PHP】创蓝253云通讯平台国际短信API接口demo

    PHP接口请求类 <?php header("Content-type:text/html; charset=UTF-8"); /* * * 类名:ChuanglanSmsA ...

  9. 短信平台API接口demo示例-JAVA/Message/MultiXSend

    DEMO:Message/MultiXSend 原文链接 支持JDK版本:1.5以上 依赖的jar包:httpclient-4.5.3.jar.httpcore-4.4.14.jar.commons- ...

  10. 【Shell】创蓝253云通讯平台国际短信API接口DEMO

    #!/bin/sh # account and password can be change to what you wanna! #author ChuangLan #修改为您的account ac ...

最新文章

  1. 转一个后缀数组的简单总结:
  2. 学习如何写PHP MVC框架(1) -- 路由
  3. C++多线程编程(入门实例)
  4. c语言楼梯有10级台阶,C语言小程序之没事爬楼梯
  5. 阈值和阀值的区别_基于双阈值设定的图像识别产品策略
  6. Android实现图片的高效批量加载
  7. 统计在线人数访问人数
  8. 回调函数及其应用案例
  9. 面试:Android网络优化
  10. PCB学习笔记——原理图编译与检查
  11. 带宽与码元的关系_比特率与带宽什么关系
  12. 计算机弹出虚拟U盘,我们通过工具所自带的电脑模拟器对我们u盘制作启动盘进行模拟启动测试...
  13. shell特殊符号cut命令,sort、wc、uniq命令,tee、tr、split命令
  14. Delphi中类的VMT
  15. HDMI、AV音视频端子介绍
  16. 正则表达式-贪婪匹配与懒惰匹配之获取短信验证码
  17. Python 数据分析 —— Numpy
  18. 用vue去实现百度下拉菜单
  19. 基于VB环境下的语音识别程序开发方法
  20. 【技术分享】Go 工程化-前端性能监控接入层 Layout 设计实践

热门文章

  1. oracle 函数索引
  2. java摇号抽奖程序_HTML5教程之年终摇号抽奖小程序
  3. python抽奖小程序_python实现简单的抽奖小程序,抽奖的内容从文件里面读取
  4. linux复制压缩包到另一个文件夹,linux复制文件到另一个文件夹或目录
  5. 三菱 J2 J2S J3 J4 编码器 电机文件 修改ID 修改功率 修改型号
  6. 渗透测试技术----工具使用(二)--Nessus工具下载及使用(安装在Kali上)
  7. c# 多线程 源码5
  8. 正则表达式应用(日期正则表达式)
  9. mysql省市县表设计_表设计(省市县)
  10. 【科普向】5G核心网架构和关键技术