代码描述:基于C#的查询短信状态接口调用示例

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


 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

using Newtonsoft.Json;

using System;

using System.IO;

using System.Net;

using System.Security.Cryptography;

using System.Text;

namespace YZX_Demo

{

//主动获取接口示例代码

class YunZhiXinGetStatus

{

/// <summary>

/// 请求地址

/// </summary>

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

/// <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 = "";

//商户提交的订单号(商户保证其唯一性)(手动填入)

string orderId = "";

//用户服务器时间戳(13位)

long time = TimeStamp() * 1000;

//生成签名

StringBuilder source = new StringBuilder();

source

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

.Append(orderId).Append("|")

.Append(time).Append("#")

.Append(TRADE_KEY);

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

//组织请求参数

StringBuilder smsRequestParam = new StringBuilder();

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

smsRequestParam.Append("&order_id=").Append(orderId);

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

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

Console.WriteLine(smsRequestParam);

//进行访问

try

{

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

Console.WriteLine(response);

//需要导入Newtonsoft.Json;

var result = JsonConvert.DeserializeObject<ResponseModel>(response);

if (SUCCESS.Equals(result.return_code))

{

//查询成功,判断订单状态

if ("SEND_SUCCESS".Equals(result.status))

{

//订单发送成功

}

else if ("SENDING".Equals(result.status))

{

//订单发送中

}

else if ("SEND_FAILED".Equals(result.status)) {

//订单发送失败

}

else if ("SEND_EXCEPTION".Equals(result.status)) {

//订单发送异常

}

}

else

{

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

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

Console.Read();

}

}

catch (Exception e)

{

throw;

}

}

/// <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>

/// 时间戳

/// </summary>

/// <returns></returns>

public static long TimeStamp()

{

DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区

long receivetime = (long)((Convert.ToDateTime(DateTime.Now)) - startTime).TotalSeconds; // 相差秒数

return receivetime;

}

/// <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 order_id { get; set; }

/// <summary>

/// 发送时间

/// </summary>

public string send_time { get; set; }

/// <summary>

/// 手机号

/// </summary>

public string mobile { get; set; }

/// <summary>

/// 返回订单状态

/// </summary>

public string status { get; set; }

/// <summary>

/// 订单错误原因

/// </summary>

public string error_msg { get; set; }

}

}

}