代码描述:基于C#的发送签名和模板调用示例

接口地址:http://api.yunzhixin.com:11140/txp/sms/submitTemplate


 starSky

     

 2017-10-16 10:04

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

using Newtonsoft.Json;

using System;

using System.IO;

using System.Net;

using System.Security.Cryptography;

using System.Text;

namespace YZX_Demo

{

class SubmitTemplate

{

/// <summary>

/// 请求地址

/// </summary>

private static readonly string REQUEST_URL = "http://api.yunzhixin.com:11140/txp/sms/submitTemplate";

/// <summary>

/// 配置您申请的tradeKey(手动填入)

/// </summary>

private static readonly string TRADE_KEY = "";

/// <summary>

/// 返回成功时,返回码的值

/// </summary>

private static readonly string SUCCESS = "0000";

public static void Main(string[] args)

{

//输入用户编号,即注册www.yunzhixin.com的手机号码(手动填入)

string account = "";

//短信类型(1.验证码类2.通知类)(手动填入)

string smsType = "";

//短信签名(手动填入)

string signature = "";

//短信模板(手动填入)

string templateContent = "";

//生成签名

StringBuilder source = new StringBuilder();

source.Append(account).Append("|")

.Append(smsType).Append("|")

.Append(signature).Append("#")

.Append(TRADE_KEY);

string sign = Md5Encrypt(source.ToString()).ToUpper();

//组织请求参数

StringBuilder smsRequestParam = new StringBuilder();

smsRequestParam.Append("account=").Append(account);

smsRequestParam.Append("&smsType=").Append(smsType);

smsRequestParam.Append("&signature=").Append(signature);

smsRequestParam.Append("&templateContent=").Append(templateContent);

smsRequestParam.Append("&sign=").Append(sign);

//进行访问

try

{

Console.WriteLine(REQUEST_URL);

Console.WriteLine(smsRequestParam.ToString());

var response = Post(REQUEST_URL, smsRequestParam.ToString());

//需要导入Newtonsoft.Json;

var result = JsonConvert.DeserializeObject(response);

if (SUCCESS.Equals(result.return_code))

{

//提交成功

Console.WriteLine("状态码:" + result.return_code);

Console.WriteLine("模板编号:" + result.tpl_id);

Console.Read();

}

else

{

//提交失败,具体状态码含义需查询文档进行判断

Console.WriteLine("错误状态码:" + result.return_code);

Console.Read();

}

}

catch (Exception e)

{

Console.Write(e.Message);

Console.Read();

}

}

/// <summary>

/// 对字符串进行MD5加密

/// </summary>

/// <param name="input"></param>

/// <param name="enc"></param>

/// <returns></returns>

public static string Md5Encrypt(string input)

{

var md5 = new MD5CryptoServiceProvider();

var buffer = md5.ComputeHash(Encoding.UTF8.GetBytes(input));

var builder = new StringBuilder(32);

foreach (var t in buffer)

{

builder.Append(t.ToString("x").PadLeft(2, '0'));

}

return builder.ToString();

}

/// <summary>

/// post请求方法 (仅供参考)

/// </summary>

/// <param name="Url"></param>

/// <param name="postDataStr"></param>

/// <returns></returns>

private static string HttpPost(string Url, string postDataStr)

{

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

//request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);

Stream myRequestStream = request.GetRequestStream();

StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));

myStreamWriter.Write(postDataStr);

myStreamWriter.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream myResponseStream = response.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));

string retString = myStreamReader.ReadToEnd();

myStreamReader.Close();

myResponseStream.Close();

return retString;

}

/// <summary>

/// 提交模板请求返回结果

/// </summary>

public class ResponseModel

{

/// <summary>

/// 返回码

/// </summary>

public string return_code { get; set; }

/// <summary>

/// 返回审核模板编号

/// </summary>

public string tpl_id { get; set; }

}

/// <summary>

/// 使用webclient进行post请求

/// </summary>

/// <param name="url"></param>

/// <param name="data"></param>

/// <param name="enc"></param>

/// <param name="proxy"></param>

/// <returns></returns>

public static string Post(string url, string data, Encoding enc = null, WebProxy proxy = null)

{

if (enc == null) enc = Encoding.UTF8;

var postdata = Encoding.UTF8.GetBytes(data);

var webClient = new WebClient()

{

Encoding = enc,

Proxy = proxy

};

webClient.Headers.Add(HttpRequestHeader.KeepAlive, "False");

webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

var response = webClient.UploadData(url, "POST", postdata); //得到返回字符流

return enc.GetString(response); //解码

}

///

/// 获取代理IP

/// </summary>

/// <param name="url"></param>

/// <param name="port"></param>

/// <param name="usr"></param>

/// <param name="pwd"></param>

/// <returns></returns>

public static WebProxy GetProxy(string url, string port, string usr, string pwd)

{

try

{

var client = new WebClient { Encoding = Encoding.UTF8 };

var ip = client.DownloadString(url).Trim();

var proxy = new WebProxy($"{ip}:{port}")

{

Credentials = new NetworkCredential(usr, pwd)

};

return proxy;

}

catch

{

return null;

}

}

}

}