Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 14739|Svar: 3

[Interface] C# kalder ikke Alibaba SMS dll, hvordan man bruger http-interface til at sende SMS

[Kopier link]
Opslået på 01/12/2018 18.37.34 | | |
  For noget tid siden havde virksomheden et projekt, der skulle bruge SMS-notifikationer, og så købte jeg en Alibaba Cloud SMS til udvikling af SMS-grænsefladen. Men projektet kører på XP-systemet, så projektet må være frameworket fra .NET3.5, men SMS-DLL'en fra Alibaba kan kun bruges i .NET 4.0 og derover, hvilket er meget pinligt, heldigvis gav Alibaba et eksempel på Java til HTTP, så jeg prøvede at skrive metoden til at kalde Alibaba Cloud HTTP i C# i henhold til java-koden. Tilbage til sagen, gå til koden! (Jeg har også publiceret i CSDN, Personality Guarantee er ikke et piratindlæg, tak)  
offentlig klasse SendShort
    {
        /// <summary>
        SMS-interface C# kaldsmetode
        /// </summary>
        <param name="url"></param>
        /// <returns></returns>
        offentlig statisk streng GetHtmlFormUrl(streng-url)
        {
            streng strRet = null;
            hvis (url == null || url. Trim(). ToString() == "")
            {
                return strRet;
            }
            streng targeturl = url. Trim(). ToString();
            Prøv
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
                HR. UserAgent = "Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1)";
                HR. Metode = "GET";
                HR. Timeout = 30 * 60 * 1000;
                WebResponse hs = t. GetResponse();
                Stream sr = hs. GetResponseStream();
                StreamReader ser = ny StreamReader(sr, Encoding.Default);
                strRet = MessageHandle(ser. ReadToEnd());
            }
            catch (Undtagelse f.eks.)
            {
               strRet = "SMS sendt mislykkedes!" +ex. Besked;
            }
            return strRet;
        }
        /// <summary>
        Tjek at mobilnummeret er legitimt
        /// </summary>
        <param name="str_handset"></param>
        /// <returns></returns>
        offentlig statisk bool IsHandset (streng str_handset)
        {
            return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^1[3|4|5|7|8][0-9]\d{8}$");
        }
        /// <summary>
        SMS-verifikationskode
        /// </summary>
        <param name="mobile"></param>
        <param name="kode"></param>
        /// <returns></returns>
        offentlig statisk streng SignDemo (streng mobil, int-kode)
        {
            streng accessKeyId = "Din accessKeyId";
            string accessSecret = "din accessSecret";
            streng nowDate = DateTime.Now.ToUniversalTime(). ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"); GTM-tid
            Dictionary<string, string> keyValues = ny Dictionary<string, string>(); Deklarer en ordbog
            1. Systemparametre
            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"); kan erstattes med XML

            2. Business API-parametre
            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. Fjern signaturnøgleordet
            hvis (keyValues.ContainsKey("Signature"))
            {
                keyValues.Remove("Signatur");
            }

            4. Parameter-nøglesortering
            Dictionary<string, string> ascDic = keyValues.OrderBy(o => o.Key). ToDictionary(o => o.Key, p => p.Value.ToString());
            5. Konstruer strengen, der skal signeres
            StringBuilder builder = ny StringBuilder();
            foreach (var-element i ascDic)
            {
                hvis (element. Key == "SignName")
                {

                }
                ellers
                {
                    Bygger. Append("&"). Append(specialUrlEncode(item. Key)). Append("="). Append(specialUrlEncode(item. Værdi));
                }
                hvis (element. Key == "RegionId")
                {
                    Bygger. Append("&"). Append(specialUrlEncode("SignName")). Append("="). Append(specialUrlEncode(keyValues["SignName"]));
                }
            }
            streng sorteQueryString = builder. ToString(). Understreng(1);

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

            string Sign = MySign(accessSecret + "&", stringToSign.ToString());
            6. Signaturen skal også kodes med en særlig URL til sidst
            strengsignture = specialUrlEncode(Sign);
            Til sidst udskriv URL'en til den legitime GET-anmodning
            streng url = "http://dysmsapi.aliyuncs.com/?Signature=" + signture + builder;
            strengresultat = GetHtmlFormUrl(url);
            returneringsresultat;
        }
        /// <summary>
        URL-kodning
        /// </summary>
        <param name="value"></param>
        /// <returns></returns>
        offentlig statisk streng specialUrlEncode(streng temp)
        {

            StringBuilder stringBuilder = ny StringBuilder();
            for (int i = 0; Jeg < midlertidigt. Længde; i++)
            {
                streng t = temp[i]. ToString();
                string k = HttpUtility.UrlEncode(t, Encoding.UTF8);
                hvis (t == k)
                {
                    stringBuilder.Append(t);
                }
                ellers
                {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            returner stringBuilder.ToString(). Replace("+", "%20"). Replace("*", "%2A"). Replace("%7E", "~");
        }
        /// <summary>
        HMACSHA1 signatur
        /// </summary>
        <param name="accessSecret"></param>
        <param name="stringToSign"></param>
        /// <returns></returns>
        offentlig statisk streng MySign (streng accessSecret, streng stringToSign)
        {
            Prøv
            {
                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). Udskifte("-", snor. Tom). ToLower();
                byte[] bytes = strToToHexByte(stringbyte);
                return Convert.ToBase64String(bytes);
            }
            catch (Undtagelse f.eks.)
            {

                Kast eks;
            }
        }
        /// <summary>
        Streng til 16 byte array
        /// </summary>
        <param name="hexString"></param>
        /// <returns></returns>
        privat statisk byte[] strToToHexByte(streng hexString)
        {
            hexString = hexString.Replace(" ", "");
            hvis ((hexString.Length % 2) != 0)
                hexString += " ";
            byte[] returnBytes = ny byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
        }
        /// <summary>
        Mekanismer til meddelelsesbehandling
        /// </summary>
        <param name="str"></param>
        /// <returns></returns>
        privat statisk streng MessageHandle (streng str)
        {
            MessageModel message = JsonConvert.DeserializeObject<MessageModel>(str);
            strengresultat = "";
            skift (besked. Kode)
            {
                tilfælde "OK":
                    resultat = "SMS sendt succesfuldt!";
                    pause;
                Case "ISP. RAM_PERMISSION_DENY":
                    resultat = "RAM Tilladelse NÆGTER";
                    pause;
                Sag "ISV. OUT_OF_SERVICE":
                    resultat = "Forretningsnedetid";
                    pause;
                Sag "ISV. PRODUCT_UN_SUBSCRIPT":
                    resultat = "Alibaba Cloud-kunder, der ikke har åbnet cloud-kommunikationsprodukter";
                    pause;
                Sag "ISV. PRODUCT_UNSUBSCRIBE":
                    resultat = "Produkt ikke åbnet";
                    pause;
                Sag "ISV. ACCOUNT_NOT_EXISTS":
                    resultat = "Konto eksisterer ikke";
                    pause;
                Sag "ISV. ACCOUNT_ABNORMAL":
                    resultat = "Kontoundtagelse";
                    pause;
                tilfælde "isv.SMS_TEMPLATE_ILLEGAL":
                    result = "SMS-skabelon er ikke lovlig";
                    pause;
                tilfælde "isv.SMS_SIGNATURE_ILLEGAL":
                    resultat = "SMS-signatur er ikke lovlig";
                    pause;
                Sag "ISV. INVALID_PARAMETERS":
                    resultat = "parameterundtagelse";
                    pause;
                Sag "ISV. MOBILE_NUMBER_ILLEGAL":
                    resultat = "ulovligt mobilnummer";
                    pause;
                Sag "ISV. MOBILE_COUNT_OVER_LIMIT":
                    resultat = "Antal mobilnumre overstiger grænsen";
                    pause;
                Sag "ISV. TEMPLATE_MISSING_PARAMETERS":
                    resultat = "skabelon mangler variabel";
                    pause;
                Sag "ISV. BUSINESS_LIMIT_CONTROL":
                    resultat = "Forretningsaktuel";
                    pause;
                Sag "ISV. INVALID_JSON_PARAM":
                    resultat = "JSON-parameteren er ikke legitim, kun strengværdier accepteres";
                    pause;
                Sag "ISV. PARAM_LENGTH_LIMIT":
                    resultat = "Parameter overstiger længdegrænsen";
                    pause;
                Sag "ISV. PARAM_NOT_SUPPORT_URL":
                    resultat = "URL ikke understøttet";
                    pause;
                Sag "ISV. AMOUNT_NOT_ENOUGH":
                    resultat = "Utilstrækkelig kontobalance";
                    pause;
                Sag "ISV. TEMPLATE_PARAMS_ILLEGAL":
                    resultat = "Skabelonvariabler indeholder ulovlige nøgleord";
                    pause;
            }
            returneringsresultat;
        }
    }

Score

Antal deltagere2MB+2 bidrage+2 Sammenbrud årsag
Lille skarn + 1 + 1 Giv den tommelfingeren op
Admin + 1 + 1 Meget kraftfuldt!

Se alle vurderinger





Tidligere:1000 bygninger er håndmalede og smukke
Næste:Tidligere japanske flåde- og hærmaterialer, PDF
Opslået på 02/12/2018 09.00.04 |
Opslået på 02/12/2018 10.19.01 |
Takket være koden fra ejeren sendes SMS via HTTP-simuleringsanmodningsgrænsefladen, der er ikke behov for at kalde en stor dll, jeg giver dig tommelfingeren op
Opslået på 14/12/2018 16.03.21 |
De er alle mestre
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com