canonicalize method
Implementation
String canonicalize(Map<String, String> _params) {
final List<String> keys = _params.keys.toList()..sort();
final Map<String, String> parameters = <String, String>{
for (final String key in keys) key: _params[key]!,
};
String _result = '';
for (final MapEntry<String, String> entry in parameters.entries) {
// 先编码 value,再整体进行编码。
_result += _encode('${entry.key}=${_encode(entry.value)}&');
}
// 移除末尾的「&」。
if (_result.endsWith('%26')) {
_result = _result.substring(0, _result.length - 3);
}
// 全局替换编码出的多余的「25」。
return _result.replaceAll('%25253A', '%253A');
}