传递一个 url 编码的字节数组
Passing a url encoded byte array
我需要通过 URL 传递一个字节数组。所以我使用 UrlEncode
方法对其进行编码,如下所示:
string ergebnis = HttpUtility.UrlEncode(array);
结果是以下字符串:%00%00%00%00%00%25%b8j
现在当我像这样 URL 传递这个字符串时 http://localhost:51980/api/Insects?Version=%00%00%00%00%00%25%b8j
这是我的 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
。相反,它是 [=19=][=19=][=19=][=19=][=19=]%�j
。当我再次尝试将其解码为 byte array
时,这当然会导致问题。
如何在 Url 中传递正确的字符串?
按照 Jon Skeet 的建议,我使用 URL-安全的 base64 解码器对数组进行了编码,如下所示 post:How to achieve Base64 URL safe encoding in C#?
我需要通过 URL 传递一个字节数组。所以我使用 UrlEncode
方法对其进行编码,如下所示:
string ergebnis = HttpUtility.UrlEncode(array);
结果是以下字符串:%00%00%00%00%00%25%b8j
现在当我像这样 URL 传递这个字符串时 http://localhost:51980/api/Insects?Version=%00%00%00%00%00%25%b8j
这是我的 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
。相反,它是 [=19=][=19=][=19=][=19=][=19=]%�j
。当我再次尝试将其解码为 byte array
时,这当然会导致问题。
如何在 Url 中传递正确的字符串?
按照 Jon Skeet 的建议,我使用 URL-安全的 base64 解码器对数组进行了编码,如下所示 post:How to achieve Base64 URL safe encoding in C#?