【问题标题】:Flutter [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FormatException: Unexpected character (at character 1)Flutter [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理异常:FormatException:意外字符(在字符 1)
【发布时间】:2021-02-13 19:22:56
【问题描述】:

在我的应用程序中,我尝试通过 API 登录用户,但出现以下错误。

E/flutter (14103): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FormatException: Unexpected character (at character 1)
E/flutter (14103): <!DOCTYPE html>
E/flutter (14103): ^
E/flutter (14103): 
E/flutter (14103): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1404:5)
E/flutter (14103): #1      _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1271:9)
E/flutter (14103): #2      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:936:22)
E/flutter (14103): #3      _parseJson (dart:convert-patch/convert_patch.dart:40:10)
E/flutter (14103): #4      JsonDecoder.convert (dart:convert/json.dart:505:36)
E/flutter (14103): #5      JsonCodec.decode (dart:convert/json.dart:156:41)
E/flutter (14103): #6      jsonDecode (dart:convert/json.dart:96:10)
E/flutter (14103): #7      FormBloc.login (package:curtain/blocs/form_bloc.dart:74:18)

在我之前的代码版本中,一切正常。在我做了一些修改(包括添加验证器)之后,我的代码无法正常工作。 下面你可以看到我的http请求:

static Future<dynamic> loginUser(String username, String password) async {
    final result = await http.post('$baseURL/en/users/login/', headers: {
      'Accept': 'application/json',
    }, body: {
      'username': username,
      'password': password,
    });

    return result?.body;
  }

我就是这样称呼它的:

dynamic login(BuildContext context) async {
    final res = await AuthService.loginUser(_username.value, _password.value);
    final data = jsonDecode(res) as Map<String, dynamic>;

    if (data['status'] != 200) {
      addError(data['message']);
    } else {
      Navigator.of(context).push(
        CupertinoPageRoute(
          builder: (context) => FeedScreen(),
        ),
      );
      return res;
    }

如果您需要查看我的 json 响应应该如何,请告诉我

【问题讨论】:

    标签: flutter http post error-handling


    【解决方案1】:

    我可以看到代码没有任何问题。您正在访问 wrong URL,或者 网络服务 有问题。请确保 URL 并查看您访问的 URL 是否正确。

    尝试在 Postman 中点击此 api 并查看您得到的响应。你会得到更好的理解。

    【讨论】:

    • 就是这样。它在邮递员中工作。当我通过 URL 本身登录时,它也可以工作。但是这里有错误。
    • 可能是因为我没有使用字符串作为用户名和密码,而是BehaviorSubject&lt;String&gt;() ??
    • 在 http.post() 之前确保您作为值传递的数据,即日志中的用户名和密码
    • 是的,我在http.post()之前打印了数据,它们是正确的。但是,它在这些打印值之后给出上述错误
    • 是的,我找到了。当我定义 baseURL 时,最后添加了斜杠 (/)。在这里,当我调用它http.post('$baseURL/en/users/login/') 时,我添加了另一个斜杠,这是不需要的。谢谢。
    猜你喜欢
    • 2022-09-29
    • 2020-03-07
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 2019-09-04
    • 2021-03-15
    相关资源
    最近更新 更多