【问题标题】:Flutter/Dart json encode passwords with special charactersFlutter/Dart json 用特殊字符编码密码
【发布时间】:2021-01-25 19:59:51
【问题描述】:

我不熟悉 Flutter 编程和工作。我正在尝试使用发布请求登录 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)。如何防止重新格式化密码。

【问题讨论】:

    标签: flutter dart http-post html-escape-characters


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您想使用 Http (Flutter) 将 # 或 @ 相关的字符串发送到服务器,大多数问题与 # 或 @ 字符有关,您可以这样做:

       Uri.encodeComponent("example@#");
      

      从服务器获取数据使用:

      Uri.decodeComponent("example@#");
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-28
        • 2016-10-19
        相关资源
        最近更新 更多