Flutter/Dart URL 中的 URI 未转义冒号“:”
Flutter/Dart Uri not escaping colon ":" in URL
创建了以下 uri:
final _url = "https://example.com/api/";
final _uri = Uri(path: _url, queryParameters: _params);
结果 http%3A//example.com/api/+{params...}
我曾尝试通过 \:
和其他方法进行转义,但没有成功:/
此问题仅在 运行 通过 Uri 时出现,我无法在网上找到任何资源来解决此问题。
替换:
final _url = "https://example.com/api/";
final _uri = Uri(path: _url, queryParameters: _params);
与:
final _url = "example.com/api/";
final _uri = Uri.https(path: _url, queryParameters: _params);
因此,在 Dart 中从 url 字符串创建 URI 的最佳方法是使用 Uri
dart package with its static methods http
or https
所以你必须改变你的代码如下:
final _authority = "example.com";
final _path = "/api";
final _params = { "q" : "dart" };
final _uri = Uri.https(_authority, _path, _params);
你的意图是
final String _url = "https://example.com/api/";
final Uri _uri = Uri
.parse(_url) // parse string
.replace(queryParameters: _params); // set params (no need manual escape, Uri do it itself)
创建了以下 uri:
final _url = "https://example.com/api/";
final _uri = Uri(path: _url, queryParameters: _params);
结果 http%3A//example.com/api/+{params...}
我曾尝试通过 \:
和其他方法进行转义,但没有成功:/
此问题仅在 运行 通过 Uri 时出现,我无法在网上找到任何资源来解决此问题。
替换:
final _url = "https://example.com/api/";
final _uri = Uri(path: _url, queryParameters: _params);
与:
final _url = "example.com/api/";
final _uri = Uri.https(path: _url, queryParameters: _params);
因此,在 Dart 中从 url 字符串创建 URI 的最佳方法是使用 Uri
dart package with its static methods http
or https
所以你必须改变你的代码如下:
final _authority = "example.com";
final _path = "/api";
final _params = { "q" : "dart" };
final _uri = Uri.https(_authority, _path, _params);
你的意图是
final String _url = "https://example.com/api/";
final Uri _uri = Uri
.parse(_url) // parse string
.replace(queryParameters: _params); // set params (no need manual escape, Uri do it itself)