【分享】调用TX云短信平台发送短信API调用代码

前几天做了个调用TX云短信平台接口发短信的小开发,TX建议用SDK,但SDK太大,且使用的Newtonsoft.Json.dll 版本需要是 13.0以上,但金蝶云星空安装目录下是 4.0,不适合这样处理。只能使用http调用接口。
TXAPI接口生成的http模式调用代码在 .net 4.5 下报错。所以通过修改后得以下代码,分享记录。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.Net.Http;
namespace SyncBillToTencentCloud
{
public class TencentSMS
{
public static string DoRequest(string secretId, string secretKey, string host, string body, string action, string region)
{
string token = "";
string service = "sms";
string version = "2021-01-11";
using (HttpClient Client = new HttpClient())
{
var request = BuildRequest(secretId, secretKey, host, service, version, action, body, region, token);
HttpResponseMessage response = Client.SendAsync(request).Result;
return response.Content.ReadAsStringAsync().Result;
}
}
private static HttpRequestMessage BuildRequest(
string secretId, string secretKey, string host,
string service, string version, string action,
string body, string region, string token
)
{
var url = "" + host;
var contentType = "application/json; charset=utf-8";
var timestamp = ((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds).ToString();
var auth = GetAuth(secretId, secretKey, host, contentType, timestamp, body);
var request = new HttpRequestMessage();
request.Method = HttpMethod.Post;
request.Headers.Add("Host", host);
request.Headers.Add("X-TC-Timestamp", timestamp);
request.Headers.Add("X-TC-Version", version);
request.Headers.Add("X-TC-Action", action);
request.Headers.Add("X-TC-Region", region);
request.Headers.Add("X-TC-Token", token);
request.Headers.Add("X-TC-RequestClient", "SDK_NET_BAREBONE");
request.Headers.TryAddWithoutValidation("Authorization", auth);
// request.Headers.Authorization = new AuthenticationHeaderValue(auth);
request.RequestUri = new Uri(url);
request.Content = new StringContent(body, Encoding.UTF8, "application/json");// MediaTypeWithQualityHeaderValue.Parse(contentType));
//request.Content = new StringContent(body, MediaTypeWithQualityHeaderValue.Parse(contentType));
Console.WriteLine(request);
return request;
}
private static string GetAuth(
string secretId, string secretKey, string host, string contentType,
string timestamp, string body
)
{
var canonicalURI = "/";
var canonicalHeaders = "content-type:" + contentType + "\nhost:" + host + "\n";
var signedHeaders = "content-type;host";
var hashedRequestPayload = Sha256Hex(body);
var canonicalRequest = "POST" + "\n"
+ canonicalURI + "\n"
+ "\n"
+ canonicalHeaders + "\n"
+ signedHeaders + "\n"
+ hashedRequestPayload;
var algorithm = "TC3-HMAC-SHA256";
var date = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(int.Parse(timestamp))
.ToString("yyyy-MM-dd");
var service = host.Split('.')[0];
var cre【分享】调用TX云短信平台发送短信API调用代码
前几天做了个调用TX云短信平台接口发短信的小开发,TX建议用SDK,但SDK太大,且使用的Newtonsoft.Json.dll 版本需要是 13.0以上,但金蝶...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



