Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 14739|Antwoord: 3

[Interface] C# roept geen Alibaba SMS-dll aan, hoe gebruik je de http-interface om SMS te versturen

[Link kopiëren]
Geplaatst op 01-12-2018 18:37:34 | | |
  Enige tijd geleden had het bedrijf een project dat SMS-meldingen moest gebruiken, en toen kocht ik een Alibaba Cloud SMS voor de ontwikkeling van de SMS-interface. Maar het project draait op het XP-systeem, dus het project moet het framework van .NET3.5 zijn, maar de SMS-DLL van Alibaba kan alleen gebruikt worden in .NET 4.0 en hoger, wat erg gênant is. Gelukkig gaf Alibaba een voorbeeld van Java voor HTTP, dus probeerde ik de methode te schrijven om Alibaba Cloud HTTP in C# aan te roepen volgens de java-code. Terug naar het punt, ga naar de code! (Ik heb ook gepubliceerd in CSDN, Personality Guarantee is geen illegale post, dank je wel)  
publieke klasse SendShort
    {
        /// <summary>
        SMS-interface C#-aanroepmethode
        /// </summary>
        <param name="url"></param>
        /// <returns></returns>
        publieke statische string GetHtmlFormUrl(string url)
        {
            string strRet = null;
            als (URL == null || URL. Trim(). ToString() == "")
            {
                return strRet;
            }
            string targeturl = url. Trim(). ToString();
            Probeer het
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
                HR. UserAgent = "Mozilla/4.0 (compatibel; MSIE 6.0; Windows NT 5.1)";
                HR. Methode = "GET";
                HR. Timeout = 30 * 60 * 1000;
                WebResponse hs = uur. GetResponse();
                Stream sr = hs. GetResponseStream();
                StreamReader ser = nieuwe StreamReader(sr, Encoding.Default);
                strRet = MessageHandle(ser. ReadToEnd());
            }
            vangen (Uitzondering bijv.)
            {
               strRet = "SMS verzonden mislukt!" +ex. Bericht;
            }
            return strRet;
        }
        /// <summary>
        Controleer of het mobiele nummer legitiem is
        /// </summary>
        <param name="str_handset"></param>
        /// <returns></returns>
        publieke statische 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-verificatiecode
        /// </summary>
        <param name="mobiel"></param>
        <param name="code"></param>
        /// <returns></returns>
        publieke statische string SignDemo (string mobile, int-code)
        {
            string accessKeyId = "Uw accessKeyId";
            string accessSecret = "uw accessSecret";
            string nowDate = DateTime.Now.ToUniversalTime(). ToString ("yyyyy-MM-dd'T'HH:mm:ss'Z'"); GTM-tijd
            Dictionary<string, string> keyValues = nieuwe Dictionary<string, string>(); Verklaar een woordenboek
            1. Systeemparameters
            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 worden vervangen door XML

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

            3. Verwijder het handtekening-trefwoord
            als (keyValues.ContainsKey("Signature"))
            {
                keyValues.Remove("Handtekening");
            }

            4. Parametersleutelsortering
            Dictionary<string, string> ascDic = keyValues.OrderBy(o => o.Key). ToDictionary(o => o.Key, p => p.Value.ToString());
            5. Construeer de string die ondertekend moet worden
            StringBuilder builder = nieuwe StringBuilder();
            foreach (var-item in ascDic)
            {
                als (item. Key == "SignName")
                {

                }
                anders
                {
                    Bouwer. Append("&"). Append(specialUrlEncode(item. Key)). Append("="). Append(specialUrlEncode(item. Waarde);
                }
                als (item. Key == "RegionId")
                {
                    Bouwer. Append("&"). Append(specialUrlEncode("SignName")). Append("="). Append(specialUrlEncode(keyValues["SignName"]));
                }
            }
            string sorteQueryString = builder. ToString(). Substring(1);

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

            string Sign = MySign(accessSecret + "&", stringToSign.ToString());
            6. De handtekening moet ook worden gecodeerd met een speciale URL aan het einde
            stringsignture = specialUrlEncode(Sign);
            Print tenslotte de URL van het legitieme GET-verzoek uit
            string url = "http://dysmsapi.aliyuncs.com/?Signature=" + signture + builder;
            string result = GetHtmlFormUrl(url);
            retourresultaat;
        }
        /// <summary>
        URL-codering
        /// </summary>
        <param name="value"></param>
        /// <returns></returns>
        publieke statische string specialUrlEncode(string temp)
        {

            StringBuilder stringBuilder = nieuwe StringBuilder();
            voor (int i = 0; Ik < tijdelijk. Lengte; i++)
            {
                String t = temp[i]. ToString();
                string k = HttpUtility.UrlEncode(t, Encoding.UTF8);
                als (t == k)
                {
                    stringBuilder.Append(t);
                }
                anders
                {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            return stringBuilder.ToString(). Replace("+", "%20"). Replace("*", "%2A"). Replace("%7E", "~");
        }
        /// <summary>
        HMACSHA1 handtekening
        /// </summary>
        <param name="accessSecret"></param>
        <param name="stringToSign"></param>
        /// <returns></returns>
        publieke statische string MySign (string accessSecret, string stringToSign)
        {
            Probeer het
            {
                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). Vervangen("-", snaar. Leeg). ToLower();
                byte[] bytes = strToToHexByte(stringbyte);
                return Convert.ToBase64String(bytes);
            }
            vangen (Uitzondering bijv.)
            {

                Gooi ex;
            }
        }
        /// <summary>
        String naar 16 bytes array
        /// </summary>
        <param name="hexString"></param>
        /// <returns></returns>
        privé statische byte[] strToToHexByte(string hexString)
        {
            hexString = hexString.Replace(" ", "");
            als ((hexString.Length % 2) != 0)
                hexString += " ";
            byte[] returnBytes = nieuwe byte[hexString.Length / 2];
            voor (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
        }
        /// <summary>
        Mechanismen voor berichtverwerking
        /// </summary>
        <param name="str"></param>
        /// <returns></returns>
        privé statische string MessageHandle (string str)
        {
            MessageModel message = JsonConvert.DeserializeObject<MessageModel>(str);
            string result = "";
            Switch (bericht. Code)
            {
                case "OK":
                    resultaat = "SMS verzonden succesvol!";
                    pauze;
                Case "ISP. RAM_PERMISSION_DENY":
                    resultaat = "RAM Permission WEIGER";
                    pauze;
                Zaak "ISV. OUT_OF_SERVICE":
                    resultaat = "Bedrijfsstilstand";
                    pauze;
                Zaak "ISV. PRODUCT_UN_SUBSCRIPT":
                    resultaat = "Alibaba Cloud-klanten die geen cloudcommunicatieproducten hebben geopend";
                    pauze;
                Zaak "ISV. PRODUCT_UNSUBSCRIBE":
                    resultaat = "Product niet geopend";
                    pauze;
                Zaak "ISV. ACCOUNT_NOT_EXISTS":
                    resultaat = "Account bestaat niet";
                    pauze;
                Zaak "ISV. ACCOUNT_ABNORMAL":
                    resultaat = "Account Exception";
                    pauze;
                Case "isv.SMS_TEMPLATE_ILLEGAL":
                    resultaat = "SMS-sjabloon is niet legaal";
                    pauze;
                Zaak "isv.SMS_SIGNATURE_ILLEGAL":
                    resultaat = "SMS-handtekening is niet legaal";
                    pauze;
                Zaak "ISV. INVALID_PARAMETERS":
                    resultaat = "parameteruitzondering";
                    pauze;
                Zaak "ISV. MOBILE_NUMBER_ILLEGAL":
                    resultaat = "illegaal mobiel nummer";
                    pauze;
                Zaak "ISV. MOBILE_COUNT_OVER_LIMIT":
                    resultaat = "Aantal mobiele nummers overschrijdt limiet";
                    pauze;
                Zaak "ISV. TEMPLATE_MISSING_PARAMETERS":
                    resultaat = "sjabloon ontbrekende variabele";
                    pauze;
                Zaak "ISV. BUSINESS_LIMIT_CONTROL":
                    resultaat = "Bedrijfsstroom";
                    pauze;
                Zaak "ISV. INVALID_JSON_PARAM":
                    result = "JSON-parameter is niet legitiem, alleen stringwaarden worden geaccepteerd";
                    pauze;
                Zaak "ISV. PARAM_LENGTH_LIMIT":
                    resultaat = "Parameter overschrijdt lengtelimiet";
                    pauze;
                Zaak "ISV. PARAM_NOT_SUPPORT_URL":
                    resultaat = "URL niet ondersteund";
                    pauze;
                Zaak "ISV. AMOUNT_NOT_ENOUGH":
                    resultaat = "Onvoldoende rekeningbalans";
                    pauze;
                Zaak "ISV. TEMPLATE_PARAMS_ILLEGAL":
                    result = "Sjabloonvariabelen bevatten illegale trefwoorden";
                    pauze;
            }
            retourresultaat;
        }
    }

Partituur

Aantal deelnemers2MB+2 bijdragen+2 Instorting reden
Klein tuig + 1 + 1 Geef het een duim omhoog
admin + 1 + 1 Heel krachtig!

Bekijk alle beoordelingen





Vorig:1000 gebouwen zijn met de hand beschilderd en prachtig
Volgend:Voormalige Japanse marine- en legermaterialen, PDF
Geplaatst op 02-12-2018 09:00:04 |
Geplaatst op 02-12-2018 10:19:01 |
Dankzij de code die de eigenaar heeft verstrekt, stuur je sms via de HTTP-simulatie-aanvraaginterface, geen grote dll nodig, ik geef je een duim omhoog
Geplaatst op 14-12-2018 16:03:21 |
Ze zijn allemaal meesters
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com