传递url编码的字节数组

时间:2015-12-15 11:55:51

标签: c# bytearray urlencode

我需要通过URL传递一个字节数组。所以我使用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

现在,当我在像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。当我尝试再次将其解码为public function test_curl() { //step1 $cSession = curl_init(); //step2 curl_setopt($cSession,CURLOPT_URL,"https://www.google.com/search?q=hehe"); curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true); //step3 $result=curl_exec($cSession); //step4 curl_close($cSession); //step5 echo $result; } 时,这当然会产生问题。

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

1 个答案:

答案 0 :(得分:0)

正如Jon Skeet所建议的,我使用URL安全的base64 decodabet对数组进行编码,如下文所示:How to achieve Base64 URL safe encoding in C#?