传递url编码的字节数组

本文关键字:字节数 数组 字节 url 编码 传递 | 更新日期: 2023-09-27 18:26:54

我需要通过URL传递一个字节数组。所以我用UrlEncode方法对它进行编码,如下所示:

string ergebnis = HttpUtility.UrlEncode(array);

结果是以下字符串:%00%00%00%00%00%25%b8j

现在,当我在类似http://localhost:51980/api/Insects?Version=%00%00%00%00%00%25%b8j 的URL中传递此字符串时

这是我的Get函数:

        public List<TaxonDiagnosis> Get([FromUri] string version)
        {
            List<TaxonDiagnosis> result = new List<TaxonDiagnosis>();
            result = db.TaxonDiagnosis.ToList();
            byte[] array = HttpUtility.UrlDecodeToBytes(version);
            if (version != null)
                result = db.GetTaxonDiagnosis(array).ToList();
            return result;
        }

问题是,version的值不是%00%00%00%00%00%25%b8j。相反,它是这个'0'0'0'0'0%�j。当我再次尝试将其解码为byte array时,这当然会引起问题。

如何在Url中传递正确的字符串?

传递url编码的字节数组

正如Jon Skeet所建议的,我用一个URL安全的base64 decodabet对数组进行了编码,比如在这篇文章中:如何在C#中实现base64 URL安全编码?