See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 14739|Vastuse: 3

[Liides] C# ei kutsu Alibaba SMS-i dll-i, kuidas kasutada http-liidest SMS-ide saatmiseks

[Kopeeri link]
Postitatud 01.12.2018 18:37:34 | | |
  Mõni aeg tagasi oli ettevõttel projekt, mis pidi kasutama SMS-teavitusi, ja siis ostsin Alibaba Cloud SMS-i SMS-i SMS-liidese arendamiseks. Aga projekt töötab XP süsteemis, seega peab projekt olema .NET3.5 raamistik, kuid Alibaba antud SMS DLL-i saab kasutada ainult .net 4.0 ja uuemates versioonides, mis on väga piinlik, õnneks andis Alibaba HTTP jaoks näite Java kasutamisest, nii et proovisin kirjutada meetodi, kuidas kutsuda Alibaba Cloud HTTP C#-s Java koodi järgi. Tagasi asja juurde, mine koodi juurde! (Olen avaldanud ka CSDN-is, isiksuse garantii ei ole piraatpostitus, aitäh)  
avalik klass SendShort
    {
        /// <summary>
        SMS-liidese C# kõnemeetod
        /// </summary>
        <param name="URL"></param>
        /// <returns></returns>
        public static string GetHtmlFormUrl(string url)
        {
            string strRet = null;
            if (url == null || url. Trim(). ToString() == "")
            {
                return strRet;
            }
            string targeturl = URL. Trim(). ToString();
            proovi
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
                HR. UserAgent = "Mozilla/4.0 (ühilduv; MSIE 6.0; Windows NT 5.1)";
                HR. Meetod = "GET";
                HR. Timeout = 30 * 60 * 1000;
                WebResponse hs = tund. GetResponse();
                Voog sr = hs. GetResponseStream();
                StreamReader ser = uus StreamReader(sr, Encoding.Default);
                strRet = MessageHandle(ser. ReadToEnd());
            }
            catch (Exception ex)
            {
               strRet = "SMS saadetud ebaõnnestus!" +ex. Sõnum;
            }
            return strRet;
        }
        /// <summary>
        Kontrolli, et mobiilinumber on ehtne
        /// </summary>
        <param name="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-i verifitseerimiskood
        /// </summary>
        <param name="mobiil"></param>
        <param name="kood"></param>
        /// <returns></returns>
        avalik staatiline string SignDemo(string mobile, int code)
        {
            string accessKeyId = "Sinu accessKeyId";
            string accessSecret = "sinu accessSecret";
            string nowDate = DateTime.Now.ToUniversalTime(). ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"); GTM aeg
            Sõnastik<string, string> keyValues = uus sõnastik<string, string>(); Deklareeri sõnastik
            1. Süsteemi parameetrid
            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"); saab asendada XML-iga

            2. Äri API parameetrid
            keyValues.Add("Tegevus", "SendSms");
            keyValues.Add ("Versioon", "2017-05-25");
            keyValues.Add("RegionId", "cn-hangzhou");
            keyValues.Add("Telefoninumbrid", mobiil);
            keyValues.Add("SignName", "Sinu allkiri");
            keyValues.Add("TemplateParam", "{\"code\":\"" + code + "\"}");
            keyValues.Add("TemplateCode", "Teie mallinumber");
            keyValues.Add("OutId", "123");

            3. Eemalda signatuurmärksõna
            if (keyValues.ContainsKey("Signature"))
            {
                keyValues.Remove("Signatuur");
            }

            4. Parameetrite võtmete sorteerimine
            Sõnastik<string, string> ascDic = keyValues.OrderBy(o => o.Key). ToDictionary(o => o.Key, p => p.Value.ToString());
            5. Koosta signeeritav string
            StringBuilder builder = uus StringBuilder();
            foreach (var ese ascDic-is)
            {
                kui (ese. Key == "SignName")
                {

                }
                else
                {
                    Ehitaja. Lisa ("&"). Append(specialUrlEncode(item. Võti)). Lisa ("="). Append(specialUrlEncode(item. Väärtus));
                }
                kui (ese. Key == "RegionId")
                {
                    Ehitaja. Lisa ("&"). Append(specialUrlEncode("SignName")). Lisa ("="). Append(specialUrlEncode(keyValues["SignName"]));
                }
            }
            string sorteQueryString = builder. ToString(). Alamstring(1);

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

            string Sign = MySign(accessSecret + "&", stringToSign.ToString());
            6. Allkiri tuleks samuti kodeerida spetsiaalse URL-iga lõpus
            string signture = specialUrlEncode(Sign);
            Lõpuks prindi välja legitiimse GET-päringu URL
            string URL = "http://dysmsapi.aliyuncs.com/?Signature=" + signture + builder;
            string result = GetHtmlFormUrl(url);
            tagastustulemus;
        }
        /// <summary>
        URL-kodeerimine
        /// </summary>
        <param name="väärtus"></param>
        /// <returns></returns>
        public static string specialUrlEncode(string temp)
        {

            StringBuilder stringBuilder = uus StringBuilder();
            for (int i = 0; Ma < ajutine. Pikkus; i++)
            {
                jada t = temperatuur[i]. ToString();
                string k = HttpUtility.UrlEncode(t, Encoding.UTF8);
                kui (t == k)
                {
                    stringBuilder.Append(t);
                }
                else
                {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            return stringBuilder.ToString(). Replace("+", "%20"). Replace("*", "%2A"). Replace("%7E", "~");
        }
        /// <summary>
        HMACSHA1 allkiri
        /// </summary>
        <param name="accessSecret"></param>
        <param name="stringToSign"></param>
        /// <returns></returns>
        public static string MySign(string accessSecret, string stringToSign)
        {
            proovi
            {
                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("-", string. Tühi). ToLower();
                byte[] baitid = strToHexByte(stringbyte);
                return Convert.ToBase64String(baidid);
            }
            catch (Exception ex)
            {

                viska ex;
            }
        }
        /// <summary>
        String 16-baidisele massiivile
        /// </summary>
        <param name="hexString"></param>
        /// <returns></returns>
        privaatne staatiline bait[] strToHexByte(string hexString)
        {
            hexString = hexString.Replace(" ", "");
            if ((hexString.Pikkus % 2) != 0)
                hexString += " ";
            byte[] returnBytes = uus bait[hexString.Pikkus / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
        }
        /// <summary>
        Sõnumite töötlemise mehhanismid
        /// </summary>
        <param name="str"></param>
        /// <returns></returns>
        privaatne staatiline string MessageHandle(string str)
        {
            MessageModel message = JsonConvert.DeserializeObject<MessageModel>(str);
            string result = "";
            Switch (sõnum. Kood)
            {
                juhtum "OK":
                    tulemus = "SMS saadeti edukalt!";
                    paus;
                Juhtum "ISP. RAM_PERMISSION_DENY":
                    tulemus = "RAM-i loa keelamine";
                    paus;
                juhtum "ISV. OUT_OF_SERVICE":
                    tulemus = "Ettevõtte seisaku";
                    paus;
                juhtum "ISV. PRODUCT_UN_SUBSCRIPT":
                    tulemus = "Alibaba pilve kliendid, kes pole pilvekommunikatsiooni tooteid avanud";
                    paus;
                juhtum "ISV. PRODUCT_UNSUBSCRIBE":
                    tulemus = "Toode ei avatud";
                    paus;
                juhtum "ISV. ACCOUNT_NOT_EXISTS":
                    tulemus = "Konto ei eksisteeri";
                    paus;
                juhtum "ISV. ACCOUNT_ABNORMAL":
                    tulemus = "Konto erand";
                    paus;
                juhtum "isv.SMS_TEMPLATE_ILLEGAL":
                    tulemus = "SMS-mall ei ole seaduslik";
                    paus;
                juhtum "isv.SMS_SIGNATURE_ILLEGAL":
                    tulemus = "SMS-allkiri ei ole seaduslik";
                    paus;
                juhtum "ISV. INVALID_PARAMETERS":
                    tulemus = "parameetri erand";
                    paus;
                juhtum "ISV. MOBILE_NUMBER_ILLEGAL":
                    tulemus = "ebaseaduslik mobiiltelefoninumber";
                    paus;
                juhtum "ISV. MOBILE_COUNT_OVER_LIMIT":
                    tulemus = "Mobiilinumbrite arv ületab limiid";
                    paus;
                juhtum "ISV. TEMPLATE_MISSING_PARAMETERS":
                    tulemus = "malli puuduv muutuja";
                    paus;
                juhtum "ISV. BUSINESS_LIMIT_CONTROL":
                    tulemus = "Ärivool";
                    paus;
                juhtum "ISV. INVALID_JSON_PARAM":
                    tulemus = "JSON parameeter ei ole legitiimne, aktsepteeritakse ainult stringiväärtusi";
                    paus;
                juhtum "ISV. PARAM_LENGTH_LIMIT":
                    tulemus = "Parameeter ületab pikkuse piiri";
                    paus;
                juhtum "ISV. PARAM_NOT_SUPPORT_URL":
                    tulemus = "URL ei toetata";
                    paus;
                juhtum "ISV. AMOUNT_NOT_ENOUGH":
                    tulemus = "Konto jääk ebapiisav";
                    paus;
                juhtum "ISV. TEMPLATE_PARAMS_ILLEGAL":
                    result = "Mallimuutujad sisaldavad ebaseaduslikke märksõnu";
                    paus;
            }
            tagastustulemus;
        }
    }

Skoor

Osalejate arv2MB+2 Aitavad kaasa+2 Ahenda põhjus
Väike sodi + 1 + 1 Näita pöialt üles
Admin + 1 + 1 Väga võimas!

Vaata kõiki hinnanguid





Eelmine:1000 hoonet on käsitsi maalitud ja kaunid
Järgmine:Endised Jaapani mereväe ja armee materjalid, PDF
Postitatud 02.12.2018 09:00:04 |
Postitatud 02.12.2018 10:19:01 |
Tänu omaniku antud koodile saata SMS HTTP simulatsioonipäringu liidese kaudu, pole vaja suurt DLL-i kutsuda, saad pöidla üles
Postitatud 14.12.2018 16:03:21 |
Nad on kõik meistrid
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com