Dartでurlencodingを行う機能はありますか?XMLHttpRequestオブジェクトを使用してAJAX呼び出しを行っていますが、URLをURLエンコードする必要があります。
dartlang.orgで検索しましたが、結果が得られませんでした。
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
更新: DartUriクラスでURIのエンコード/デコードがサポートされるようになりました
DartのURIコードは、dart:uridart:html
と呼ばれる別のライブラリに配置されます(したがって、との間で共有できますdart:io
)。現在、関数が含まれていないようurlencode
です。そのため、現時点での最善の代替策は、おそらくこのJavaScriptのDart実装を使用することencodeUriComponent
です。
マップをURLエンコードされた文字列に変換するこの小さな関数を作成しました。これは、探しているものかもしれません。
String encodeMap(Map data) {
return data.keys.map((key) => "${Uri.encodeComponent(key)}=${Uri.encodeComponent(data[key])}").join("&");
}
Uri.encodeComponent(url); // To encode url
Uri.decodeComponent(encodedUrl); // To decode url
まだあるとは思いません。http://unpythonic.blogspot.com/2011/11/oauth20-and-jsonp-with-dartin-web.htmlとencodeComponentメソッドを確認してください。
一部の文字が不足していることに注意してください。拡張する必要があります。Dartには、これが組み込まれていて、簡単にアクセスできる必要があります。実際にあるかもしれませんが、見つかりませんでした。
フラッターでの安全な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));