Dart中的url编码

pb3s4cty  于 2023-01-03  发布在  其他
关注(0)|答案(7)|浏览(169)

有没有一个函数做的网址编码 dart ?我正在做一个 AJAX 调用使用XMLHttpRequest对象,我需要的网址是网址编码。
我在www.example.com上搜索了dartlang.org,但没有找到任何结果。

5ktev3wc

5ktev3wc1#

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

trnvg8h3

trnvg8h32#

更新the Dart Uri class中现在支持编码/解码URI

Dart的URI代码被放在一个名为dart:uri的单独库中(因此它可以在dart:htmldart:io之间共享),看起来它目前不包含urlencode函数,因此目前最好的替代方案可能是使用JavaScript的encodeUriComponentthis Dart实现。

hmmo2u0o

hmmo2u0o3#

我编写了这个小函数来将Map转换为URL编码字符串,这可能就是您要查找的内容。

String encodeMap(Map data) {
  return data.keys.map((key) => "${Uri.encodeComponent(key)}=${Uri.encodeComponent(data[key])}").join("&");
}
hujrc8aj

hujrc8aj4#

Uri.encodeComponent(url); // To encode url
Uri.decodeComponent(encodedUrl); // To decode url
i1icjdpr

i1icjdpr5#

我认为还没有。请查看http://unpythonic.blogspot.com/2011/11/oauth20-and-jsonp-with-dartin-web.html和encodeComponent方法。
注意,它也缺少一些字符,它需要扩展。 dart 真的应该有这样的内置和容易得到。它可能有它的事实,但我没有找到它。

rvpgvaaj

rvpgvaaj6#

flutter中的安全URL编码
例如,

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

如果是get请求:

Uri.encodeComponent(url+postDataKey+postData);

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

var data = postDataKey + Uri.encodeComponent(postData);
webViewController.postUrl(url: Uri.parse(url), postData: utf8.encode(data));
pkln4tw6

pkln4tw67#

Uri.encodeComponent()是正确的,Uri.encodeFull()有一个错误,请参见以下示例:

void main() {
  print('$text\n');
  var coded = Uri.encodeFull(text);
  print(coded);
  print('\n');
  coded = Uri.encodeComponent(text);
  print(coded);
  
}

var text = '#2020-02-29T142022Z_1523651918_RC2EAF9OOHDB_RT.jpg';

相关问题