Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 14739|Válasz: 3

[Interfész] A C# nem hívja az Alibaba SMS dll-t, hogyan kell http interfészt használni SMS küldésére

[Linket másol]
Közzétéve 2018. 12. 01. 18:37:34 | | |
  Nemrég a cégnek volt egy projektje, aminek SMS-értesítéseket kellett használnia, majd vettem egy Alibaba Cloud SMS-t SMS interfész fejlesztéséhez. De a projekt XP rendszeren fut, így a projektnek a .NET3.5 keretrendszerének kell lennie, de az Alibaba által adott SMS DLL csak a .net 4.0 és fölöttebb verzióban használható, ami nagyon kínos, szerencsére az Alibaba adott egy példát a HTTP-re Java-ra, ezért megpróbáltam megírni az Alibaba Cloud HTTP hívásának módszerét C#-ban a java kód szerint. Vissza a lényeghez, menj a kódhoz! (Én is írtam CSDN-ben is, a személyiség garanciája nem kalóz poszt, köszönöm)  
nyilvános osztály SendShort
    {
        /// <summary>
        SMS interfész C# hívás módszer
        /// </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();
            próbáld ki
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
                HR. UserAgent = "Mozilla/4.0 (kompatibilis; MSIE 6.0; Windows NT 5.1)";
                HR. Method = "GET";
                HR. Időkorlát = 30 * 60 * 1000;
                WebResponse hs = óra. GetResponse();
                Stream sr = hs. GetResponseStream();
                StreamReader ser = új StreamReader(sr, Encoding.Default);
                strRet = MessageHandle(ser. ReadToEnd());
            }
            catch (kivétel ex)
            {
               strRet = "SMS küldése meghibásodott!" +ex. Üzenet;
            }
            return strRet;
        }
        /// <summary>
        Ellenőrizd, hogy a mobilszám hiteles-e
        /// </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 ellenőrző kód
        /// </summary>
        <param name="mobil"></param>
        <param name="kód"></param>
        /// <returns></returns>
        public static string SignDemo(string mobile, int code)
        {
            string accessKeyId = "Az Ön accessKeyId";
            string accessSecret = "your accessSecret";
            string nowDate = DateTime.Now.ToUniversalTime(). ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"); GTM idő
            Dictionary<string, string> keyValues = új Dictionary<string, string>(); Szótár bejelentése
            1. Rendszerparaméterek
            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"); XML-lel helyettesíthető

            2. Üzleti API paraméterek
            keyValues.Add("Akció", "SendSms");
            keyValues.Add("Verzió", "2017-05-25");
            keyValues.Add("RegionId", "cn-hangzhou");
            keyValues.Add("Telefonszámok", mobil);
            keyValues.Add("SignName", "Aláírásod");
            keyValues.Add("TemplateParam", "{\"code\":\"" + code + "\"}");
            keyValues.Add("TemplateCode", "A sablonszámod");
            keyValues.Add("OutId", "123");

            3. Távolítsd el az aláírási kulcsszót
            if (keyValues.ContainsKey("Signature"))
            {
                keyValues.Remove("Aláírás");
            }

            4. Paraméterkulcs rendezés
            Dictionary<string, string> ascDic = keyValues.OrderBy(o => o.Key). ToDictionary(o => o.Key, p => p.Value.ToString());
            5. Építsd meg az aláírandó láncszálat
            StringBuilder builder = új StringBuilder();
            foreach (var item in ascDic)
            {
                if (tétel. Kulcs == "SignName")
                {

                }
                más
                {
                    Építő. Append("&"). Append(specialUrlEncode(item. Kulcs)). Csatolás("="). Append(specialUrlEncode(item. Érték));
                }
                if (tétel. Kulcs == "RegionId")
                {
                    Építő. Append("&"). Append(specialUrlEncode("SignName")). Csatolás("="). Append(specialUrlEncode(keyValues["SignName"]));
                }
            }
            string sorteQueryString = builder. ToString(). Mellékszál(1);

            StringBuilder stringToSign = új StringBuilder();
            stringToSign.Append("GET"). Melléklet("&");
            stringToSign.Append(specialUrlEncode("/")). Melléklet("&");
            stringToSign.Append(specialUrlEncode(sorteQueryString));

            string Sign = MySign(accessSecret + "&", stringToSign.ToString());
            6. Az aláírást egy speciális URL-lel kell kódolni a végén
            string signture = specialUrlEncode(Sign);
            Végül nyomtatd ki a jogos GET kérés URL-jét
            string URL = "http://dysmsapi.aliyuncs.com/?Signature=" + signture + builder;
            string result = GetHtmlFormUrl(url);
            visszaadási eredmény;
        }
        /// <summary>
        URL kódolás
        /// </summary>
        <param name="érték"></param>
        /// <returns></returns>
        public static string specialUrlEncode(string temp)
        {

            StringBuilder stringBuilder = új StringBuilder();
            for (int i = 0; Én < ideiglenes típus. Hossz; i++)
            {
                String t = temp[i]. ToString();
                string k = HttpUtility.UrlEncode(t, Encoding.UTF8);
                ha (t == k)
                {
                    stringBuilder.Append(t);
                }
                más
                {
                    stringBuilder.Append(k.ToUpper());
                }
            }
            return stringBuilder.ToString(). Replace("+", "%20"). Replace("*", "%2A"). Replace("%7E", "~");
        }
        /// <summary>
        HMACSHA1 aláírás
        /// </summary>
        <param name="accessSecret"></param>
        <param name="stringToSign"></param>
        /// <returns></returns>
        public static string MySign(string accessSecret, string stringToSign)
        {
            próbáld ki
            {
                var hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(accessSecret));
                var dataBuffer = Encoding.UTF8.GetBytes(stringToSign);
                var hashBytes = hmacsha1. ComputeHash(dataBuffer);
                stringbyte = BitConverter.ToString(hashBytes, 0). Helyettesít("-", zsinór. Üres). ToLower();
                byte[] bytes = strToHexByte(stringbyte);
                return Convert.ToBase64String(bájt);
            }
            catch (kivétel ex)
            {

                Throw Ex;
            }
        }
        /// <summary>
        String 16 bájtos tömbbe
        /// </summary>
        <param name="hexString"></param>
        /// <returns></returns>
        private static byte[] strToHexByte(string hexString)
        {
            hexString = hexString.Replace(" ", "");
            if ((hexString.Length % 2) != 0)
                hexString += " ";
            byte[] returnBytes = új 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>
        Üzenetfeldolgozó mechanizmusok
        /// </summary>
        <param name="str"></param>
        /// <returns></returns>
        privát statikus string MessageHandle (string str)
        {
            MessageModel message = JsonConvert.DeserializeObject<MessageModel>(str);
            string eredmény = "";
            Kapcsoló (üzenet. Kód)
            {
                eset "OK":
                    result = "SMS sikeres elküldve!";
                    szünet;
                eset "ISP. RAM_PERMISSION_DENY":
                    result = "RAM engedély megtagadása";
                    szünet;
                Case "ISV. OUT_OF_SERVICE":
                    result = "Üzleti állásidő";
                    szünet;
                Case "ISV. PRODUCT_UN_SUBSCRIPT":
                    result = "Alibaba Cloud ügyfelek, akik nem nyitottak felhőalapú kommunikációs termékeket";
                    szünet;
                Case "ISV. PRODUCT_UNSUBSCRIBE":
                    result = "Termék nem nyílt meg";
                    szünet;
                Case "ISV. ACCOUNT_NOT_EXISTS":
                    result = "Fiók nem létezik";
                    szünet;
                Case "ISV. ACCOUNT_ABNORMAL":
                    result = "Fiók kivétel";
                    szünet;
                "isv.SMS_TEMPLATE_ILLEGAL" eset:
                    result = "SMS sablon nem legális";
                    szünet;
                "isv.SMS_SIGNATURE_ILLEGAL" eset:
                    result = "SMS aláírás nem legális";
                    szünet;
                Case "ISV. INVALID_PARAMETERS":
                    result = "paraméter kivétel";
                    szünet;
                Case "ISV. MOBILE_NUMBER_ILLEGAL":
                    result = "illegális mobiltelefonszám";
                    szünet;
                Case "ISV. MOBILE_COUNT_OVER_LIMIT":
                    result = "A mobilszámok száma meghaladja a limitet";
                    szünet;
                Case "ISV. TEMPLATE_MISSING_PARAMETERS":
                    result = "sablon hiányzó változó";
                    szünet;
                Case "ISV. BUSINESS_LIMIT_CONTROL":
                    result = "Business Current";
                    szünet;
                Case "ISV. INVALID_JSON_PARAM":
                    result = "JSON paraméter nem legitim, csak a string értékeket fogadják el";
                    szünet;
                Case "ISV. PARAM_LENGTH_LIMIT":
                    result = "Paraméter túllépi a hosszhatárt";
                    szünet;
                Case "ISV. PARAM_NOT_SUPPORT_URL":
                    result = "URL nem támogatott";
                    szünet;
                Case "ISV. AMOUNT_NOT_ENOUGH":
                    result = "Elégtelen számlaegyenleg";
                    szünet;
                Case "ISV. TEMPLATE_PARAMS_ILLEGAL":
                    result = "Sablonváltozók illegális kulcsszavakat tartalmaznak";
                    szünet;
            }
            visszaadási eredmény;
        }
    }

Pontszám

A résztvevők száma2MB+2 hozzájárul+2 Összeomlás ok
Kis szemét + 1 + 1 Adj neki egy hüvelykujjat
Admin + 1 + 1 Nagyon erős!

Minden értékelés megtekintése





Előző:1000 épület kézzel festett és gyönyörű
Következő:Korábbi japán haditengerészeti és hadsereg anyagok, PDF
Közzétéve 2018. 12. 02. 9:00:04 |
Közzétéve 2018. 12. 02. 10:19:01 |
A tulajdonos által biztosított kódnak köszönhetően küldj SMS-et az HTTP szimulációs kérelmező felületen keresztül, nem kell nagy DLL-t hívni, adj egy hüvelykujjat
Közzétéve 2018. 12. 14. 16:03:21 |
Mindannyian mesterek
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com