我是一个编程新手,也是一个使用Flutter的新手。我正在尝试使用post请求登录到API。
模型(使用app.quicktype.io)
import 'dart:convert';
class UserLogin {
UserLogin({
this.login,
this.password,
this.entity,
this.reset,
});
String login;
String password;
String entity;
int reset;
factory UserLogin.fromRawJson(String str) =>
UserLogin.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
factory UserLogin.fromJson(Map<String, dynamic> json) => UserLogin(
login: json["login"],
password: json["password"],
entity: json["entity"],
reset: json["reset"],
);
Map<String, dynamic> toJson() => {
"login": login,
"password": password,
"entity": entity,
"reset": reset,
};
}
String loginJason = json.encode(
UserLogin(login: login, password: password, entity: "", reset: 0));请求:
static Future apiLogin(
String url, String login, String password, String loginJason) async {
var response = await http.post(url,
headers: {'Content-Type': 'application/json'},
body: loginJason);请求的正文应如下所示:
{"login":"login",
"password":"password",
"entity": "",
"reset" 0
}一切正常,直到在密码中使用特殊字符,例如"123@abc“,然后dart将主体编码为:
{"login":"login",
"password":"123%40abc",
"entity": "",
"reset" 0
}密码不再有效,因为已重新格式化(Html-Escape)。如何防止重新格式化密码。
发布于 2020-10-11 16:36:46
Uri.decodeComponent("123%40abc") = 123@abc
发布于 2021-07-13 21:54:14
#或@字符的大部分问题如果你想使用Http (Flutter)向服务器发送#或@相关的字符串,你可以这样做:
Uri.encodeComponent("example@#");要从服务器获取数据,请使用:
Uri.decodeComponent("example@#");主要是特殊字符需要进行Uri编码/解码
https://stackoverflow.com/questions/64302036
复制相似问题