Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 14739|Atsakyti: 3

[Sąsaja] C# neskambina "Alibaba SMS dll", kaip naudoti http sąsają SMS siuntimui

[Kopijuoti nuorodą]
Paskelbta 2018-12-01 18:37:34 | | |
  Prieš kurį laiką įmonė turėjo projektą, kuriame reikėjo naudoti SMS pranešimus, o tada nusipirkau "Alibaba Cloud SMS" SMS sąsajos kūrimui. Bet projektas veikia XP sistemoje, todėl projektas turi būti .NET3.5 sistema, tačiau "Alibaba" pateiktas SMS DLL gali būti naudojamas tik .net 4.0 ir naujesnėse versijose, o tai yra labai gėdinga, laimei, "Alibaba" pateikė "Java" pavyzdį HTTP, todėl bandžiau parašyti "Alibaba Cloud HTTP" iškvietimo būdą C# pagal "Java" kodą. Grįžkite prie esmės, eikite į kodą! (Aš taip pat paskelbė CSDN, asmenybės garantija nėra piratinis paštu, ačiū)  
viešoji klasė SendShort
    {
        /// <summary>
        SMS sąsaja C# skambučio metodas
        /// </summary>
        <param name="url"></param>
        /// <returns></returns>
        viešoji statinė eilutė GetHtmlFormUrl(eilutės URL)
        {
            string strRet = null;
            if (url == null || url. Trim(). ToString() == "")
            {
                grąžinti strRet;
            }
            eilutės targeturl = url. Trim(). ToString();
            Pabandykite
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
                val. UserAgent = "Mozilla/4.0 (suderinamas; MSIE 6.0; Windows NT 5.1)";
                val. Metodas = "GET";
                val. Skirtasis laikas = 30 * 60 * 1000;
                WebResponse hs = val. GetResponse();
                Srautas sr = hs. GetResponseStream();
                StreamReader ser = naujas StreamReader(sr, Encoding.Default);
                strRet = MessageHandle(ser. ReadToEnd());
            }
            laimikis (išimtis ex)
            {
               strRet = "SMS išsiųsta nepavyko!" +pvz. Žinutė;
            }
            grąžinti strRet;
        }
        /// <summary>
        Patikrinkite, ar mobiliojo telefono numeris yra teisėtas
        /// </summary>
        <param name="str_handset"></param>
        /// <returns></returns>
        viešas statinis bool IsHandset(eilutė str_handset)
        {
            return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^1[3|4|5|7|8][0-9]\d{8}$");
        }
        /// <summary>
        SMS patvirtinimo kodas
        /// </summary>
        <param name="mobile"></param>
        <param name="code"></param>
        /// <returns></returns>
        viešoji statinė eilutė SignDemo (eilutė mobilusis, int kodas)
        {
            string accessKeyId = "Jūsų accessKeyId ";
            string accessSecret = "jūsų accessSecret";
            eilutė nowDate = DateTime.Now.ToUniversalTime(). ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"); GTM laikas
            Žodynas<eilutė, eilutė> keyValues = naujas Žodynas<eilutė, eilutė>(); Žodyno paskelbimas
            1. Sistemos parametrai
            keyValues.Add("SignatureMethod", "HMAC-SHA1");
            keyValues.Add("SignatureNonce", Guid.NewGuid(). ToString());
            keyValues.Add("AccessKeyId", accessKeyId);
            keyValues.Add("SignatureVersion", "1.0");
            keyValues.Add("Laiko žyma", nowDate);
            keyValues.Add("Formatas", "Json"); gali būti pakeistas XML

            2. Verslo API parametrai
            keyValues.Add("Veiksmas", "SendSms");
            keyValues.Add("Versija", "2017-05-25");
            keyValues.Add("RegionId", "cn-hangzhou");
            keyValues.Add("Telefono numeriai", mobilusis);
            keyValues.Add("SignName", "Jūsų parašas");
            keyValues.Add("TemplateParam", "{\"code\":\"" + kodas + "\"}");
            keyValues.Add("Šablono kodas", "Jūsų šablono numeris");
            keyValues.Add("OutId", "123");

            3. Pašalinkite parašo raktažodį
            if (keyValues.ContainsKey("Parašas"))
            {
                keyValues.Remove("Parašas");
            }

            4. Parametrų raktų rūšiavimas
            Žodynas<eilutė, eilutė> ascDic = keyValues.OrderBy(o => o.Key). ToDictionary(o => o.Key, p => p.Value.ToString());
            5. Sukonstruokite eilutę, kurią norite pasirašyti
            StringBuilder kūrėjas = naujas StringBuilder();
            foreach (var elementas ascDic)
            {
                jei (elementas. Key == "SignName")
                {

                }
                kitaip
                {
                    statybininkas. Pridėti ("&"). Append(specialUrlEncode(item. Raktas)). Pridėti ("="). Append(specialUrlEncode(item. Vertė));
                }
                jei (elementas. Raktas == "RegionId")
                {
                    statybininkas. Pridėti ("&"). Append(specialUrlEncode("SignName")). Pridėti ("="). Append(specialUrlEncode(keyValues["SignName"]));
                }
            }
            eilutė sorteQueryString = builder. ToString(). Papildoma eilutė (1);

            StringBuilder stringToSign = naujas StringBuilder();
            stringToSign.Append("GET"). Pridėti ("&");
            stringToSign.Append(specialUrlEncode("/")). Pridėti ("&");
            stringToSign.Append(specialUrlEncode(sorteQueryString));

            eilutės ženklas = MySign(accessSecret + "&", stringToSign.ToString());
            6. Parašas taip pat turėtų būti užkoduotas specialiu URL pabaigoje
            eilutės signture = specialUrlEncode(Sign);
            Galiausiai atsispausdinkite teisėtos GET užklausos URL
            eilutės url = "http://dysmsapi.aliyuncs.com/?Signature=" + signture + builder;
            eilutės rezultatas = GetHtmlFormUrl(url);
            grąžinti rezultatą;
        }
        /// <summary>
        URL kodavimas
        /// </summary>
        <param name="value"></param>
        /// <returns></returns>
        viešoji statinė eilutė specialUrlEncode(eilutės temp)
        {

            StringBuilder stringBuilder = naujas StringBuilder();
            for (int i = 0; I < temp. Ilgis; i++)
            {
                eilutė t = temp[i]. ToString();
                eilutė k = HttpUtility.UrlEncode(t, Encoding.UTF8);
                if (t == k)
                {
                    stringBuilder.Append(t);
                }
                kitaip
                {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            return stringBuilder.ToString(). Pakeisti("+", "%20"). Pakeisti("*", "%2A"). Pakeisti("%7E", "~");
        }
        /// <summary>
        HMACSHA1 parašas
        /// </summary>
        <param name="accessSecret"></param>
        <param name="stringToSign"></param>
        /// <returns></returns>
        viešoji statinė eilutė MySign(string accessSecret, string stringToSign)
        {
            Pabandykite
            {
                var hmacsha1 = naujas HMACSHA1(Encoding.UTF8.GetBytes(accessSecret));
                var dataBuffer = Encoding.UTF8.GetBytes(stringToSign);
                var hashBytes = hmacsha1. ComputeHash(dataBuffer);
                eilutė stringbyte = BitConverter.ToString(hashBytes, 0). Pakeisti ("-", eilutę. Tuščia). ToLower();
                baitas[] baitai = strToToHexByte(stringbyte);
                grąžinti Convert.ToBase64String(baitai);
            }
            laimikis (išimtis ex)
            {

                mesti ex;
            }
        }
        /// <summary>
        Eilutė į 16 baitų masyvą
        /// </summary>
        <param name="hexString"></param>
        /// <returns></returns>
        privatus statinis baitas[] strToToHexByte(eilutė hexString)
        {
            hexString = hexString.Replace(" ", "");
            if ((hexString.Length % 2) != 0)
                hexString += " ";
            baitas[] returnBytes = naujas baitas[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            grąžinti returnBytes;
        }
        /// <summary>
        Pranešimų apdorojimo mechanizmai
        /// </summary>
        <param name="str"></param>
        /// <returns></returns>
        privati statinė eilutė MessageHandle(eilutės str)
        {
            MessageModel pranešimas = JsonConvert.DeserializeObject<MessageModel>(str);
            eilutės rezultatas = "";
            jungiklis (pranešimas. Kodas)
            {
                atvejis "Gerai":
                    rezultatas = "SMS išsiųsta sėkmingai!";
                    pertrauka;
                atvejis "IPT. RAM_PERMISSION_DENY":
                    rezultatas = "RAM leidimas DENY";
                    pertrauka;
                Byla "ISV. OUT_OF_SERVICE":
                    rezultatas = "Verslo prastova";
                    pertrauka;
                Byla "ISV. PRODUCT_UN_SUBSCRIPT":
                    rezultatas = "Alibaba Cloud klientai, kurie neatidarė debesijos ryšio produktų";
                    pertrauka;
                Byla "ISV. PRODUCT_UNSUBSCRIBE":
                    rezultatas = "Produktas neatidarytas";
                    pertrauka;
                Byla "ISV. ACCOUNT_NOT_EXISTS":
                    result = "Sąskaitos nėra";
                    pertrauka;
                Byla "ISV. ACCOUNT_ABNORMAL":
                    result = "Paskyros išimtis";
                    pertrauka;
                atvejis "isv.SMS_TEMPLATE_ILLEGAL":
                    rezultatas = "SMS šablonas nėra legalus";
                    pertrauka;
                atvejis "isv.SMS_SIGNATURE_ILLEGAL":
                    rezultatas = "SMS parašas nėra teisėtas";
                    pertrauka;
                Byla "ISV. INVALID_PARAMETERS":
                    rezultatas = "parametro išimtis";
                    pertrauka;
                Byla "ISV. MOBILE_NUMBER_ILLEGAL":
                    rezultatas = "neteisėtas mobiliojo telefono numeris";
                    pertrauka;
                Byla "ISV. MOBILE_COUNT_OVER_LIMIT":
                    result = "Mobiliojo ryšio numerių skaičius viršija limitą";
                    pertrauka;
                Byla "ISV. TEMPLATE_MISSING_PARAMETERS":
                    rezultatas = "trūksta šablono kintamojo";
                    pertrauka;
                Byla "ISV. BUSINESS_LIMIT_CONTROL":
                    rezultatas = "Dabartinis verslas";
                    pertrauka;
                Byla "ISV. INVALID_JSON_PARAM":
                    result = "JSON parametras nėra teisėtas, priimamos tik eilutės reikšmės";
                    pertrauka;
                Byla "ISV. PARAM_LENGTH_LIMIT":
                    result = "Parametras viršija ilgio ribą";
                    pertrauka;
                Byla "ISV. PARAM_NOT_SUPPORT_URL":
                    result = "URL nepalaikomas";
                    pertrauka;
                Byla "ISV. AMOUNT_NOT_ENOUGH":
                    rezultatas = "Nepakankamas sąskaitos likutis";
                    pertrauka;
                Byla "ISV. TEMPLATE_PARAMS_ILLEGAL":
                    result = "Šablono kintamuosiuose yra neleistinų raktažodžių";
                    pertrauka;
            }
            grąžinti rezultatą;
        }
    }

Vertinimas pagal

Dalyvių skaičius2MB+2 Prisidėti prie+2 Žlugimo priežastis
Mažai purvo + 1 + 1 Pakelkite nykštį
Admin + 1 + 1 Labai galingas!

Peržiūrėti visus įvertinimus





Ankstesnis:1000 pastatų yra dažyti rankomis ir gražūs
Kitą:Buvusi Japonijos karinio jūrų laivyno ir armijos medžiaga, PDF
Paskelbta 2018-12-02 09:00:04 |
Paskelbta 2018-12-02 10:19:01 |
Savininko pateikto kodo dėka siųskite SMS per HTTP modeliavimo užklausos sąsają, nereikia skambinti dideliam dll, duokite nykštį aukštyn
Paskelbta 2018-12-14 16:03:21 |
Jie visi yra meistrai
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com