2015-12-15 3 views
-1

Мне нужно передать массив байтов по URL-адресу. Поэтому я кодирующий его с UrlEncode методом, как это:Передача массива байтов с кодировкой url

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 «ы значение ISN 't %00%00%00%00%00%25%b8j. Вместо этого это \0\0\0\0\0%�j. Это, конечно, вызывает проблемы, когда я пытаюсь снова декодировать его в byte array.

Как передать правильную строку в URL?

+2

Я предлагаю вам использовать base64 кодирование данных с URL-сейфом base64 decodabet. –

+0

Как это сделать? – adryr

+1

Хорошо, я начну с исследования. Просто поиск на SO найден https://stackoverflow.com/questions/26353710/how-to-achieve-base64-url-safe-encoding-in-c –

ответ