乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      UrlEncode編碼 unity c#

       鴻蛟家平 2020-06-23

      今天接入易接的SDK,在支付回調(diào)一直失敗。問后原因是前端調(diào)用易接支付接口pay()中的callbackinfo需要進(jìn)行urlEncode編碼。

      為什么需要用urlEncode編碼?是因?yàn)楫?dāng)字符串?dāng)?shù)據(jù)以url的形式傳遞給web服務(wù)器時,字符串中是不允許出現(xiàn)空格和特殊字符的。

      附Unity C#版 urlEncode編碼 類

      復(fù)制代碼
        1 using System.Text;
        2 using System.Collections;
        3 public static class WebUtility
        4 {
        5     // Fields
        6 
        7     private static char[] _htmlEntityEndingChars = new char[] { ';', '&' };
        8     private const char HIGH_SURROGATE_START = '\ud800';
        9     private const char LOW_SURROGATE_END = '\udfff';
       10     private const char LOW_SURROGATE_START = '\udc00';
       11     private const int UNICODE_PLANE00_END = 0xffff;
       12     private const int UNICODE_PLANE01_START = 0x10000;
       13     private const int UNICODE_PLANE16_END = 0x10ffff;
       14     private const int UnicodeReplacementChar = 0xfffd;
       15 
       16 
       17 
       18     private static void ConvertSmpToUtf16(uint smpChar, out char leadingSurrogate, out char trailingSurrogate)
       19     {
       20         int num = ((int) smpChar) - 0x10000;
       21         leadingSurrogate = (char) ((num / 0x400) + 0xd800);
       22         trailingSurrogate = (char) ((num % 0x400) + 0xdc00);
       23     }
       24 
       25     private static int HexToInt(char h)
       26     {
       27         if ((h >= '0') && (h <= '9'))
       28         {
       29             return (h - '0');
       30         }
       31         if ((h >= 'a') && (h <= 'f'))
       32         {
       33             return ((h - 'a') + 10);
       34         }
       35         if ((h >= 'A') && (h <= 'F'))
       36         {
       37             return ((h - 'A') + 10);
       38         }
       39         return -1;
       40     }
       41 
       42 
       43 
       44 
       45 
       46     private static char IntToHex(int n)
       47     {
       48         if (n <= 9)
       49         {
       50             return (char) (n + 0x30);
       51         }
       52         return (char) ((n - 10) + 0x41);
       53     }
       54 
       55     private static bool IsUrlSafeChar(char ch)
       56     {
       57         if ((((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'))) || ((ch >= '0') && (ch <= '9')))
       58         {
       59             return true;
       60         }
       61         switch (ch)
       62         {
       63         case '(':
       64         case ')':
       65         case '*':
       66         case '-':
       67         case '.':
       68         case '_':
       69         case '!':
       70             return true;
       71         }
       72         return false;
       73     }
       74 
       75     public static string UrlEncode(string value)
       76     {
       77         if (value == null)
       78         {
       79             return null;
       80         }
       81         byte[] bytes = Encoding.UTF8.GetBytes(value);
       82         return Encoding.UTF8.GetString(UrlEncode(bytes, 0, bytes.Length, false));
       83     }
       84     private static bool ValidateUrlEncodingParameters(byte[] bytes, int offset, int count)
       85     {
       86         if ((bytes == null) && (count == 0))
       87         {
       88             return false;
       89         }
       90         if (bytes == null)
       91         {
       92             //throw new ArgumentNullException("bytes");
       93         }
       94         if ((offset < 0) || (offset > bytes.Length))
       95         {
       96             //throw new ArgumentOutOfRangeException("offset");
       97         }
       98         if ((count < 0) || ((offset + count) > bytes.Length))
       99         {
      100             //throw new ArgumentOutOfRangeException("count");
      101         }
      102         return true;
      103     }
      104 
      105 
      106 
      107     private static byte[] UrlEncode(byte[] bytes, int offset, int count)
      108     {
      109         if (!ValidateUrlEncodingParameters(bytes, offset, count))
      110         {
      111             return null;
      112         }
      113         int num = 0;
      114         int num2 = 0;
      115         for (int i = 0; i < count; i++)
      116         {
      117             char ch = (char) bytes[offset + i];
      118             if (ch == ' ')
      119             {
      120                 num++;
      121             }
      122             else if (!IsUrlSafeChar(ch))
      123             {
      124                 num2++;
      125             }
      126         }
      127         if ((num == 0) && (num2 == 0))
      128         {
      129             return bytes;
      130         }
      131         byte[] buffer = new byte[count + (num2 * 2)];
      132         int num4 = 0;
      133         for (int j = 0; j < count; j++)
      134         {
      135             byte num6 = bytes[offset + j];
      136             char ch2 = (char) num6;
      137             if (IsUrlSafeChar(ch2))
      138             {
      139                 buffer[num4++] = num6;
      140             }
      141             else if (ch2 == ' ')
      142             {
      143                 buffer[num4++] = 0x2b;
      144             }
      145             else
      146             {
      147                 buffer[num4++] = 0x25;
      148                 buffer[num4++] = (byte) IntToHex((num6 >> 4) & 15);
      149                 buffer[num4++] = (byte) IntToHex(num6 & 15);
      150             }
      151         }
      152         return buffer;
      153     }
      154 
      155     private static byte[] UrlEncode(byte[] bytes, int offset, int count, bool alwaysCreateNewReturnValue)
      156     {
      157         byte[] buffer = UrlEncode(bytes, offset, count);
      158         if ((alwaysCreateNewReturnValue && (buffer != null)) && (buffer == bytes))
      159         {
      160             return (byte[]) buffer.Clone();
      161         }
      162         return buffer;
      163     }
      164 
      165 
      166     public static byte[] UrlEncodeToBytes(byte[] value, int offset, int count)
      167     {
      168         return UrlEncode(value, offset, count, true);
      169     }
      170 
      171 
      172 
      173 }
      復(fù)制代碼

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多