52

Dart 中是否有进行 urlencoding 的功能?我正在使用 XMLHttpRequest 对象进行 AJAX 调用,并且我需要对 url 进行 url 编码。

我在 dartlang.org 上进行了搜索,但没有找到任何结果。

4

6 回答 6

71
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

于 2013-07-01T14:44:42.233 回答
36

更新:现在Dart Uri 类中支持编码/解码 URI

Dart 的 URI 代码放置在一个名为dart:uri的单独库中(因此它可以在dart:html和之间共享dart:io)。看起来它目前不包含urlencode函数,所以目前最好的选择可能是使用JavaScriptDart 实现encodeUriComponent

于 2012-04-20T13:33:28.637 回答
26

我编写了这个小函数来将 Map 转换为 URL 编码的字符串,这可能是您正在寻找的。

String encodeMap(Map data) {
  return data.keys.map((key) => "${Uri.encodeComponent(key)}=${Uri.encodeComponent(data[key])}").join("&");
}
于 2012-08-28T14:23:15.163 回答
22
Uri.encodeComponent(url); // To encode url
Uri.decodeComponent(encodedUrl); // To decode url
于 2019-04-16T14:35:06.580 回答
3

我认为还没有。查看http://unpythonic.blogspot.com/2011/11/oauth20-and-jsonp-with-dartin-web.html和 encodeComponent 方法。

注意,它也缺少一些字符,它需要扩展。Dart 真的应该内置并且易于使用。它实际上可能有它,但我没有找到它。

于 2012-04-20T14:07:39.873 回答
0


Flutter Ex中的安全 URL 编码。

String url  = 'http://example.org/';
String postDataKey = "requestParam="
String postData = 'hdfhghdf+fdfbjdfjjndf'

在获取请求的情况下:

Uri.encodeComponent(url+postDataKey+postData);

在发布数据请求的情况下,使用flutter_inappwebview

var data = postDataKey + Uri.encodeComponent(postData);
webViewController.postUrl(url: Uri.parse(url), postData: utf8.encode(data));
于 2021-08-15T08:37:10.157 回答