我在Flutter项目中遇到异常。该错误如下所示:
Exception has occurred.
FormatException (FormatException: Unexpected character (at character 1)
<!DOCTYPE html>
^
)
这显示在“抛出错误”行中。代码如下:
Future<void> _authenticate(
String email, String password, String urlSegment) async {
final url =
"https://identitytoolkit.googleapis.com/v1/accounts:$urlSegment?key=AIzaSyC9Rz9CDv-_hc68I_wdvogF2ZnDHCpr2Y8";
try {
final response = await http.post(
url,
body: json.encode(
{
"email": email,
"password": password,
"returnSecureToken": true,
},
),
);
print(response.body);
final responseData = json.decode(response.body);
if (responseData["error"] != null) {
throw HttpException(responseData["error"]["message"]);
}
_token = responseData["idToken"];
_userId = responseData["localId"];
_expiryDate = DateTime.now().add(
Duration(
seconds: int.parse(
responseData["expiresIn"],
),
),
);
_autoLogout();
notifyListeners();
final prefs = await SharedPreferences.getInstance();
final userData = json.encode(
{
"token": _token,
"userId": _userId,
"expiryDate": _expiryDate.toIso8601String(),
},
);
prefs.setString("userData", userData);
} catch (error) {
throw error; //Exception is showing here
}
}
Error message looks like this as shown in the image (Click)
调试控制台显示以下消息:
I/flutter (18432): <!DOCTYPE html>
I/flutter (18432): <html lang=en>
I/flutter (18432): <meta charset=utf-8>
I/flutter (18432): <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
I/flutter (18432): <title>Error 404 (Not Found)!!1</title>
I/flutter (18432): <style>
I/flutter (18432): *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/brand
I/flutter (18432): FormatException: Unexpected character (at character 1)
I/flutter (18432): <!DOCTYPE html>
I/flutter (18432): ^
请帮助
答案 0 :(得分:2)
我在 API 响应中呈现 pdf 文本和 html 文本时遇到了同样的问题,我已经使用以下代码解决了这个问题。如需更多信息,请参阅 here。
GROUP BY
注意:您必须输入 var data= await json.decode(json.encode(response.databody);
才能重新关注该问题
答案 1 :(得分:0)
似乎您没有得到JSON作为响应,因此在解码时会抛出该异常。试试邮递员中的API,看看响应是否为JSON。
答案 2 :(得分:0)
我的端点在http url中错误。我在http url中使用了一些较旧的终结点。
根据Firebase REST Auth文档,我必须将signUp
用于注册功能并将signInWithPassword
用于登录功能,并将其传递到urlSegment
中的_authenticate()