Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 14739|Atbildi: 3

[Interfeiss] C# neizsauc Alibaba SMS dll, kā izmantot http interfeisu, lai nosūtītu SMS

[Kopēt saiti]
Publicēts 01.12.2018 18:37:34 | | |
  Pirms kāda laika uzņēmumam bija projekts, kurā bija jāizmanto SMS paziņojumi, un tad es nopirku Alibaba Cloud SMS SMS saskarnes izstrādei. Bet projekts darbojas XP sistēmā, tāpēc projektam jābūt .NET3.5 ietvaram, bet Alibaba sniegto SMS DLL var izmantot tikai .net 4.0 un jaunākās versijās, kas ir ļoti apkaunojoši, par laimi Alibaba sniedza HTTP java piemēru, tāpēc es mēģināju uzrakstīt Alibaba Cloud HTTP izsaukšanas metodi C# saskaņā ar java kodu. Atgriezieties pie punkta, dodieties uz kodu! (Esmu publicējis arī CSDN, personības garantija nav pirātiska ziņa, paldies)  
publiskā klase SendShort
    {
        /// <summary>
        SMS interfeiss C# zvana metode
        /// </summary>
        <param name="url"></param>
        /// <returns></returns>
        publiskā statiskā virkne GetHtmlFormUrl(virknes URL)
        {
            virkne strRet = nulle;
            if (url == null || url. Apgriezt(). ToString() == "")
            {
                atgriezt strRet;
            }
            virkne targeturl = url. Apgriezt(). ToString();
            izmēģināt
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
                hr. UserAgent = "Mozilla/4.0 (saderīgs; MSIE 6.0; Windows NT 5.1)";
                hr. Metode = "GET";
                hr. Taimauts = 30 * 60 * 1000;
                WebResponse hs = hr. Saņemt atbildi ();
                Straume sr = hs. GetResponseStream();
                StreamReader ser = jauns StreamReader(sr, Encoding.Default);
                strRet = MessageHandle(ser. ReadToEnd());
            }
            nozveja (izņēmums, piemēram)
            {
               strRet = "SMS nosūtīts neizdevās!" +piem. Ziņojums;
            }
            atgriezt strRet;
        }
        /// <summary>
        Pārbaudiet, vai mobilā tālruņa numurs ir likumīgs
        /// </summary>
        <param name="str_handset"></param>
        /// <returns></returns>
        publiskais statiskais bool IsHandset(virkne str_handset)
        {
            return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^1[3|4|5|7|8][0-9]\d{8}$");
        }
        /// <summary>
        SMS verifikācijas kods
        /// </summary>
        <param name="mobile"></param>
        <param name="code"></param>
        /// <returns></returns>
        publiskā statiskā virkne SignDemo(virkne mobilā, int kods)
        {
            string accessKeyId = "Jūsu accessKeyId ";
            string accessSecret = "jūsu accessSecret";
            virkne nowDate = DateTime.Now.ToUniversalTime(). ToString("gggg-MM-dd'T'HH:mm:ss'Z'"); GTM laiks
            Vārdnīca<virkne, virkne> keyValues = jauna vārdnīca<virkne, virkne>(); Vārdnīcas deklarēšana
            1. Sistēmas parametri
            keyValues.Add("SignatureMethod", "HMAC-SHA1");
            keyValues.Add("SignatureNonce", Guid.NewGuid(). ToString());
            keyValues.Add("AccessKeyId", accessKeyId);
            keyValues.Add("SignatureVersion", "1.0");
            keyValues.Add("Laika zīmogs", nowDate);
            keyValues.Add("Formāts", "Json"); var aizstāt ar XML

            2. Biznesa API parametri
            keyValues.Add("Darbība", "SendSms");
            keyValues.Add("Versija", "2017-05-25");
            keyValues.Add("RegionId", "cn-hangzhou");
            keyValues.Add("Tālruņa numuri", mobilais);
            keyValues.Add("SignName", "Jūsu paraksts");
            keyValues.Add("TemplateParam", "{\"code\":\"" + kods + "\"}");
            keyValues.Add("Veidnes kods", "Jūsu veidnes numurs");
            keyValues.Add("OutId", "123");

            3. Noņemiet paraksta atslēgvārdu
            if (keyValues.ContainsKey("Paraksts"))
            {
                keyValues.Remove("Paraksts");
            }

            4. Parametru atslēgu kārtošana
            Vārdkas<virkne, virkne> ascDic = keyValues.OrderBy(o => o.Key). ToDictionary(o => o.Key, p => p.Value.ToString());
            5. Izveidojiet parakstāmo virkni
            StringBuilder veidotājs = jauns StringBuilder();
            foreach (var vienums ascDic)
            {
                Ja (vienums. Atslēga == "SignName")
                {

                }
                citādi
                {
                    celtnieks. Pievienot ("&"). Append(specialUrlEncode(item. Atslēga)). Pievienot ("="). Append(specialUrlEncode(item. Vērtība));
                }
                Ja (vienums. Atslēga == "RegionId")
                {
                    celtnieks. Pievienot ("&"). Append(specialUrlEncode("SignName")). Pievienot ("="). Append(specialUrlEncode(keyValues["SignName"]));
                }
            }
            virkne sorteQueryString = veidotājs. ToString(). Apakšvirkne (1);

            StringBuilder stringToSign = jauns StringBuilder();
            stringToSign.Append("GET"). Pievienot ("&");
            stringToSign.Append(specialUrlEncode("/")). Pievienot ("&");
            stringToSign.Append(specialUrlEncode(sorteQueryString));

            virkne Sign = MySign(accessSecret + "&", stringToSign.ToString());
            6. Parakstam jābūt kodētam arī ar īpašu URL beigās
            virknes signture = specialUrlEncode(Sign);
            Visbeidzot, izdrukājiet likumīgā GET pieprasījuma URL
            virknes url = "http://dysmsapi.aliyuncs.com/?Signature=" + signture + veidotājs;
            virknes rezultāts = GetHtmlFormUrl(url);
            atgriezt rezultātu;
        }
        /// <summary>
        URL kodējums
        /// </summary>
        <param name="value"></param>
        /// <returns></returns>
        publiskā statiskā virkne specialUrlEncode(virknes temp)
        {

            StringBuilder stringBuilder = jauns StringBuilder();
            for (int i = 0; Es < temp. Garums; i++)
            {
                virkne t = temp[i]. ToString();
                virkne k = HttpUtility.UrlEncode(t, kodējums.UTF8);
                ja (t == k)
                {
                    stringBuilder.Append(t);
                }
                citādi
                {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            atgriezt stringBuilder.ToString(). Aizstāt("+", "%20"). Aizstāt("*", "%2A"). Aizstāt("%7E", "~");
        }
        /// <summary>
        HMACSHA1 paraksts
        /// </summary>
        <param name="accessSecret"></param>
        <param name="stringToSign"></param>
        /// <returns></returns>
        publiskā statiskā virkne MySign(string accessSecret, stringToSign)
        {
            izmēģināt
            {
                var hmacsha1 = jauns HMACSHA1(Encoding.UTF8.GetBytes(accessSecret));
                var dataBuffer = Kodējums.UTF8.GetBytes(stringToSign);
                var hashBytes = hmacsha1. ComputeHash(dataBuffer);
                virkne stringbyte = BitConverter.ToString(hashBytes, 0). Aizstāt("-", virkne. Tukšs). ToLower();
                baits[] baiti = strToToHexByte(stringbyte);
                atgriezt Convert.ToBase64String(baiti);
            }
            nozveja (izņēmums, piemēram)
            {

                mest bijušo;
            }
        }
        /// <summary>
        Virkne līdz 16 baitu masīvam
        /// </summary>
        <param name="hexString"></param>
        /// <returns></returns>
        privāts statisks baits[] strToToHexByte(virkne hexString)
        {
            hexString = hexString.Replace(" ", "");
            if ((hexString.Length % 2) != 0)
                hexString += " ";
            baits[] returnBytes = jauns baits[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            atgriezt returnBytes;
        }
        /// <summary>
        Ziņojumu apstrādes mehānismi
        /// </summary>
        <param name="str"></param>
        /// <returns></returns>
        privāta statiska virkne MessageHandle(virknes str)
        {
            MessageModel ziņojums = JsonConvert.DeserializeObject<MessageModel>(str);
            virknes rezultāts = "";
            slēdzis (ziņojums. Kods)
            {
                gadījums "OK":
                    rezultāts = "SMS nosūtīts veiksmīgi!";
                    pārtraukums;
                Lieta "ISP. RAM_PERMISSION_DENY":
                    rezultāts = "RAM atļauja DENY";
                    pārtraukums;
                Lieta "ISV. OUT_OF_SERVICE":
                    rezultāts = "Biznesa dīkstāve";
                    pārtraukums;
                Lieta "ISV. PRODUCT_UN_SUBSCRIPT":
                    rezultāts = "Alibaba Cloud klienti, kuri nav atvēruši mākoņsakaru produktus";
                    pārtraukums;
                Lieta "ISV. PRODUCT_UNSUBSCRIBE":
                    rezultāts = "Prece nav atvērta";
                    pārtraukums;
                Lieta "ISV. ACCOUNT_NOT_EXISTS":
                    rezultāts = "Konts nepastāv";
                    pārtraukums;
                Lieta "ISV. ACCOUNT_ABNORMAL":
                    rezultāts = "Konta izņēmums";
                    pārtraukums;
                gadījums "isv.SMS_TEMPLATE_ILLEGAL":
                    rezultāts = "SMS veidne nav likumīga";
                    pārtraukums;
                gadījums "isv.SMS_SIGNATURE_ILLEGAL":
                    rezultāts = "SMS paraksts nav likumīgs";
                    pārtraukums;
                Lieta "ISV. INVALID_PARAMETERS":
                    rezultāts = "parametru izņēmums";
                    pārtraukums;
                Lieta "ISV. MOBILE_NUMBER_ILLEGAL":
                    rezultāts = "nelegāls mobilā tālruņa numurs";
                    pārtraukums;
                Lieta "ISV. MOBILE_COUNT_OVER_LIMIT":
                    rezultāts = "Mobilo tālruņu numuru skaits pārsniedz ierobežojumu";
                    pārtraukums;
                Lieta "ISV. TEMPLATE_MISSING_PARAMETERS":
                    rezultāts = "veidnes trūkstošais mainīgais";
                    pārtraukums;
                Lieta "ISV. BUSINESS_LIMIT_CONTROL":
                    rezultāts = "Biznesa pašreizējais";
                    pārtraukums;
                Lieta "ISV. INVALID_JSON_PARAM":
                    rezultāts = "JSON parametrs nav likumīgs, tiek pieņemtas tikai virknes vērtības";
                    pārtraukums;
                Lieta "ISV. PARAM_LENGTH_LIMIT":
                    rezultāts = "Parametrs pārsniedz garuma ierobežojumu";
                    pārtraukums;
                Lieta "ISV. PARAM_NOT_SUPPORT_URL":
                    result = "URL netiek atbalstīts";
                    pārtraukums;
                Lieta "ISV. AMOUNT_NOT_ENOUGH":
                    rezultāts = "Nepietiekams konta atlikums";
                    pārtraukums;
                Lieta "ISV. TEMPLATE_PARAMS_ILLEGAL":
                    result = "Veidnes mainīgie satur nelikumīgus atslēgvārdus";
                    pārtraukums;
            }
            atgriezt rezultātu;
        }
    }

Vērtējums

Dalībnieku skaits2MB+2 Veicināt+2 Sakļaut iemesls
Maz putas + 1 + 1 Dodiet īkšķi uz augšu
Admin + 1 + 1 Ļoti spēcīgs!

Skatīt visus vērtējumus





Iepriekšējo:1000 ēkas ir apgleznotas ar rokām un skaistas
Nākamo:Bijušie Japānas jūras kara flotes un armijas materiāli, PDF
Publicēts 02.12.2018 09:00:04 |
Publicēts 02.12.2018 10:19:01 |
Pateicoties īpašnieka sniegtajam kodam, nosūtiet SMS, izmantojot HTTP simulācijas pieprasījuma interfeisu, nav nepieciešams zvanīt lielam dll, dodiet īkšķi uz augšu
Publicēts 14.12.2018 16:03:21 |
Viņi visi ir meistari
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com