电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-165

【分享】调用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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信