Мне нужно передать массив байтов по 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?
Я предлагаю вам использовать base64 кодирование данных с URL-сейфом base64 decodabet. –
Как это сделать? – adryr
Хорошо, я начну с исследования. Просто поиск на SO найден https://stackoverflow.com/questions/26353710/how-to-achieve-base64-url-safe-encoding-in-c –