Urlencoding в Дарт
Есть ли функция, выполняющая urlencoding в Dart? Я делаю вызов AJAX с использованием объекта XMLHttpRequest, и мне нужно, чтобы URL-адрес был закодирован в url.
Я сделал поиск на dartlang.org, но это не принесло никаких результатов.
Ответы
Ответ 1
Обновление: теперь есть поддержка кодирования/декодирования URI в классе Dart Uri
URI-код Dart помещается в отдельную библиотеку, которая называется dart: uri (поэтому она может использоваться совместно между dart:html
и dart:io
). Похоже, что в настоящее время он не включает функцию urlencode
, поэтому на данный момент вашей лучшей альтернативой, вероятно, является использование этой реализации JavaScript в Dart encodeUriComponent
.
Ответ 2
var uri = 'http://example.org/api?foo=some message';
var encoded = Uri.encodeFull(uri);
assert(encoded == 'http://example.org/api?foo=some%20message');
var decoded = Uri.decodeFull(encoded);
assert(uri == decoded);
http://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html#ch03-uri
Ответ 3
Я написал эту небольшую функцию для преобразования Map в строку в кодировке URL, которая может быть тем, что вы ищете.
String encodeMap(Map data) {
return data.keys.map((key) => "${Uri.encodeComponent(key)}=${Uri.encodeComponent(data[key])}").join("&");
}
Ответ 4
Uri.encodeComponent(url); // To encode url
Uri.decodeComponent(encodedUrl); // To decode url
Ответ 5
Я не думаю, что есть еще. Проверьте http://unpythonic.blogspot.com/2011/11/oauth20-and-jsonp-with-dartin-web.html и метод encodeComponent.
Заметьте, что ему не хватает некоторых символов, его нужно расширить. Дарт действительно должен иметь это встроенное и легкодоступное. Это может быть на самом деле, но я этого не нашел.