首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter/Dart json使用特殊字符对密码进行编码

Flutter/Dart json使用特殊字符对密码进行编码
EN

Stack Overflow用户
提问于 2020-10-11 16:31:58
回答 2查看 924关注 0票数 0

我是一个编程新手,也是一个使用Flutter的新手。我正在尝试使用post请求登录到API。

模型(使用app.quicktype.io)

代码语言:javascript
复制
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));

请求:

代码语言:javascript
复制
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);

请求的正文应如下所示:

代码语言:javascript
复制
{"login":"login", 
  "password":"password",
  "entity": "",
  "reset" 0
}

一切正常,直到在密码中使用特殊字符,例如"123@abc“,然后dart将主体编码为:

代码语言:javascript
复制
{"login":"login", 
 "password":"123%40abc",
 "entity": "",
 "reset" 0
}

密码不再有效,因为已重新格式化(Html-Escape)。如何防止重新格式化密码。

EN

回答 2

Stack Overflow用户

发布于 2020-10-11 16:36:46

Uri.decodeComponent("123%40abc") = 123@abc

票数 1
EN

Stack Overflow用户

发布于 2021-07-13 21:54:14

#或@字符的大部分问题如果你想使用Http (Flutter)向服务器发送#或@相关的字符串,你可以这样做:

代码语言:javascript
复制
 Uri.encodeComponent("example@#");

要从服务器获取数据,请使用:

代码语言:javascript
复制
Uri.decodeComponent("example@#");

主要是特殊字符需要进行Uri编码/解码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64302036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档