我在我的项目中使用http包,并尝试发送GET请求和解码收到的json,但得到错误消息:
E/flutter ( 2292): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FormatException: Invalid unicode escape (at character 29930)
E/flutter ( 2292): ...u0438u043d)"},{"id":374,"title":"u041u0435u0437u0430u0431u0443u...
这是我的请求:
var response = await http.get(
'${ApiConstants.BASE_URL}$path$formattedParams',
headers: {
'accept': "application/json",
'Authorization': 'Bearer $token',
},
);
return json.decode(response.body);
还尝试使用json验证器验证服务器响应,在我的情况下响应是有效的json。
这是我的json响应的一部分,其中捕获错误:
{
"id": 373,
"title": "Настурция (Капуцин)"
},
{
"id": 374,
"title": "Незабудка" // error is here
},
如何解决这个问题?
从服务器以正确的UTF-8方式发送响应头
<<p>头/strong>{
"Content-Type":"application/json;charset=UTF-8",
"Charset":"utf-8"
}
Laravel例子:
return response()->json(
$data, // response data
$code, // status code
[
'Content-Type' => 'application/json;charset=UTF-8',
'Charset' => 'utf-8'
],
JSON_UNESCAPED_UNICODE
);
还在android manifest的application元素下添加useCleartextTraffic属性。
<application
android:usesCleartextTraffic="true"
.....