Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14739|Odpoveď: 3

[Rozhranie] C# nevolá Alibaba SMS dll, ako použiť http rozhranie na odosielanie SMS

[Kopírovať odkaz]
Zverejnené 1. 12. 2018 18:37:34 | | |
  Pred časom mala firma projekt, ktorý potreboval používať SMS notifikácie, a potom som si kúpil Alibaba Cloud SMS na vývoj SMS rozhraní. Projekt však beží na systéme XP, takže projekt musí byť frameworkom .NET3.5, ale SMS DLL od Alibaby sa dá použiť len v .net 4.0 a vyšších, čo je veľmi trápne, našťastie Alibaba poskytla príklad Javy pre HTTP, tak som sa pokúsil napísať metódu volania Alibaba Cloud HTTP v C# podľa java kódu. Vráťme sa k veci, choď ku kódu! (Publikoval som aj na CSDN, záruka osobnosti nie je pirátsky príspevok, ďakujem)  
verejná trieda SendShort
    {
        /// <summary>
        SMS rozhranie C# metóda volania
        /// </summary>
        <názov parametra="URL"></param>
        /// <returns></returns>
        public static string GetHtmlFormUrl(string url)
        {
            string strRet = null;
            ak (url == null || url. trim(). ToString() == "")
            {
                return strRet;
            }
            String targeturl = URL. trim(). ToString();
            Skús
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
                hr. UserAgent = "Mozilla/4.0 (kompatibilný; MSIE 6.0; Windows NT 5.1)";
                hr. Metóda = "ZÍSKAŤ";
                hr. Timeout = 30 * 60 * 1000;
                WebResponse hs = hod. GetResponse();
                Stream sr = hs. GetResponseStream();
                StreamReader ser = nový StreamReader(sr, Encoding.Default);
                strRet = MessageHandle(ser. ReadToEnd());
            }
            chytiť (Výnimka ex)
            {
               strRet = "SMS odoslaná zlyhala!" +napr. Správa;
            }
            return strRet;
        }
        /// <summary>
        Overte, či je mobilné číslo legitímne
        /// </summary>
        <názov parametra="str_handset"></param>
        /// <returns></returns>
        public static bool IsHandset (string str_handset)
        {
            return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^1[3|4|5|7|8][0-9]\d{8}$");
        }
        /// <summary>
        SMS overovací kód
        /// </summary>
        <názov parametra="mobil"></param>
        <názov parametra="kód"></param>
        /// <returns></returns>
        public static string SignDemo (string mobile, int code)
        {
            string accessKeyId = "Your accessKeyId";
            string accessSecret = "your accessSecret";
            string nowDate = DateTime.Now.ToUniversalTime(). ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"); GTM čas
            Dictionary<string, string> keyValues = nový Dictionary<string, string>(); Vyhláste slovník
            1. Systémové parametre
            keyValues.Add("SignatureMethod", "HMAC-SHA1");
            keyValues.Add("SignatureNonce", Guid.NewGuid(). ToString());
            keyValues.Add("AccessKeyId", accessKeyId);
            keyValues.Add("SignatureVersion", "1.0");
            keyValues.Add("Timestamp", nowDate);
            keyValues.Add("Format", "Json"); možno nahradiť XML

            2. Parametre Business API
            keyValues.Add("Action", "SendSms");
            keyValues.Add("Version", "2017-05-25");
            keyValues.Add("RegionId", "cn-hangzhou");
            keyValues.Add("PhoneNumbers", mobil);
            keyValues.Add("SignName", "Your Signature");
            keyValues.Add("TemplateParam", "{\"code\":\"" + code + "\"}");
            keyValues.Add("TemplateCode", "Your Template Number");
            keyValues.Add("OutId", "123");

            3. Odstrániť podpisové kľúčové slovo
            if (keyValues.ContainsKey("Signature"))
            {
                keyValues.Reremove ("Signature");
            }

            4. Triedenie kľúčov podľa parametrov
            Dictionary<string, string> ascDic = keyValues.OrderBy(o => o.Key). ToDictionary(o => o.Key, p => p.Value.ToString());
            5. Konštruujte reťazec, ktorý sa má podpísať
            StringBuilder builder = nový StringBuilder();
            foreach (var položka v ascDic)
            {
                ak (položka. Key == "SignName")
                {

                }
                else
                {
                    staviteľ. Príloha ("&"). Append(specialUrlEncode(item. Key)). Pridať ("="). Append(specialUrlEncode(item. Hodnota));
                }
                ak (položka. Key == "RegionId")
                {
                    staviteľ. Príloha ("&"). Append(specialUrlEncode("SignName")). Pridať ("="). Append(specialUrlEncode(keyValues["SignName"]));
                }
            }
            string sorteQueryString = builder. ToString(). Podreťazec(1);

            StringBuilder stringToSign = nový StringBuilder();
            stringToSign.Append("GET"). Príloha ("&");
            stringToSign.Append(specialUrlEncode("/")). Príloha ("&");
            stringToSign.Append(specialUrlEncode(sorteQueryString));

            string Sign = MySign(accessSecret + "&", stringToSign.ToString());
            6. Podpis by mal byť tiež zakódovaný so špeciálnou URL na konci
            string signture = specialUrlEncode(Sign);
            Nakoniec vytlačte URL legitímnej požiadavky GET
            string url = "http://dysmsapi.aliyuncs.com/?Signature=" + signture + builder;
            string result = GetHtmlFormUrl(url);
            vrátiť výsledok;
        }
        /// <summary>
        Kódovanie URL
        /// </summary>
        <názov parametra="hodnota"></param>
        /// <returns></returns>
        public static string specialUrlEncode(string temp)
        {

            StringBuilder stringBuilder = nový StringBuilder();
            pre (int i = 0; Ja < dočasnú teplotu. Dĺžka; i++)
            {
                Struna t = temp[i]. ToString();
                string k = HttpUtility.UrlEncode(t, Encoding.UTF8);
                ak (t == k)
                {
                    stringBuilder.Append(t);
                }
                else
                {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            return stringBuilder.ToString(). Replace("+", "%20"). Nahradiť ("*", "%2A"). Nahradiť ("%7E", "~");
        }
        /// <summary>
        HMACSHA1 podpis
        /// </summary>
        <názov parametra="accessSecret"></param>
        <param name="stringToSign"></param>
        /// <returns></returns>
        public static string MySign(string accessSecret, string stringToSign)
        {
            Skús
            {
                var hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(accessSecret));
                var dataBuffer = Encoding.UTF8.GetBytes(stringToSign);
                var hashBytes = hmacsha1. ComputeHash(dataBuffer);
                string stringbyte = BitConverter.ToString(hashBytes, 0). Replace("-", reťazec. Prázdne). ToLower();
                byte[] bytes = strToHexByte(stringbyte);
                return Convert.ToBase64String(bytes);
            }
            chytiť (Výnimka ex)
            {

                Vyhoď ex;
            }
        }
        /// <summary>
        Pole reťazcov na 16 bajtov
        /// </summary>
        <názov parametra="hexString"></param>
        /// <returns></returns>
        súkromný statický bajt[] strToToHexByte(string hexString)
        {
            hexString = hexString.Replace(" ", "");
            ak ((hexString.Length % 2) != 0)
                hexString += " ";
            byte[] returnBytes = new byte[hexString.Length / 2];
            pre (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
        }
        /// <summary>
        Mechanizmy spracovania správ
        /// </summary>
        <názov parametra="str"></param>
        /// <returns></returns>
        súkromný statický reťazec MessageHandle(string str)
        {
            MessageModel správa = JsonConvert.DeserializeObject<MessageModel>(str);
            string result = "";
            Prepínač (správa. Kód)
            {
                prípad "OK":
                    výsledok = "SMS odoslaná úspešne!";
                    prestávka;
                Prípad "ISP. RAM_PERMISSION_DENY":
                    výsledok = "RAM povolenie ZAKÁZANÉ";
                    prestávka;
                Prípad "ISV. OUT_OF_SERVICE":
                    výsledok = "Výpadky podnikania";
                    prestávka;
                Prípad "ISV. PRODUCT_UN_SUBSCRIPT":
                    výsledok = "Zákazníci Alibaba Cloud, ktorí ešte neotvorili cloudové komunikačné produkty";
                    prestávka;
                Prípad "ISV. PRODUCT_UNSUBSCRIBE":
                    výsledok = "Produkt neotvorený";
                    prestávka;
                Prípad "ISV. ACCOUNT_NOT_EXISTS":
                    výsledok = "Účet neexistuje";
                    prestávka;
                Prípad "ISV. ACCOUNT_ABNORMAL":
                    výsledok = "Výnimka účtu";
                    prestávka;
                Prípad "isv.SMS_TEMPLATE_ILLEGAL":
                    výsledok = "SMS šablóna nie je legálna";
                    prestávka;
                Prípad "isv.SMS_SIGNATURE_ILLEGAL":
                    výsledok = "SMS podpis nie je legálny";
                    prestávka;
                Prípad "ISV. INVALID_PARAMETERS":
                    výsledok = "výnimka parametra";
                    prestávka;
                Prípad "ISV. MOBILE_NUMBER_ILLEGAL":
                    výsledok = "nelegálne mobilné telefónne číslo";
                    prestávka;
                Prípad "ISV. MOBILE_COUNT_OVER_LIMIT":
                    výsledok = "Počet mobilných čísel presahuje limit";
                    prestávka;
                Prípad "ISV. TEMPLATE_MISSING_PARAMETERS":
                    výsledok = "chýbajúca premenná šablóny";
                    prestávka;
                Prípad "ISV. BUSINESS_LIMIT_CONTROL":
                    výsledok = "Obchodný prúd";
                    prestávka;
                Prípad "ISV. INVALID_JSON_PARAM":
                    result = "JSON parameter nie je legitímny, akceptujú sa len hodnoty reťazcov";
                    prestávka;
                Prípad "ISV. PARAM_LENGTH_LIMIT":
                    výsledok = "Parameter presahuje dĺžkový limit";
                    prestávka;
                Prípad "ISV. PARAM_NOT_SUPPORT_URL":
                    výsledok = "URL nie podporovaná";
                    prestávka;
                Prípad "ISV. AMOUNT_NOT_ENOUGH":
                    výsledok = "Nedostatočný zostatok na účte";
                    prestávka;
                Prípad "ISV. TEMPLATE_PARAMS_ILLEGAL":
                    result = "Šablónové premenné obsahujú nelegálne kľúčové slová";
                    prestávka;
            }
            vrátiť výsledok;
        }
    }

Skóre

Počet účastníkov2MB+2 prispieť+2 Kolaps dôvod
Malý + 1 + 1 Dajte palec hore
Admin + 1 + 1 Veľmi silné!

Zobraziť všetky hodnotenia





Predchádzajúci:1000 budov je ručne maľovaných a krásnych
Budúci:Materiály bývalého japonského námorníctva a armády, PDF
Zverejnené 2. 12. 2018 9:00:04 |
Zverejnené 2. 12. 2018 10:19:01 |
Vďaka kódu od majiteľa posielajte SMS cez HTTP simulačné rozhranie požiadavky, nemusíte volať veľkému dll, dajte palec hore
Zverejnené 14. 12. 2018 16:03:21 |
Všetci sú majstri
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com