我正在使用Dio进行HTTP请求
var dio = Dio();
var response =
await dio.get(URL);
final responseBody = json.decode(response.data);
final statusCode = response.statusCode;
if (statusCode != 200 || responseBody == null) {
print("status code:$statusCode");
throw new ServerExceptionHandler(
"An error ocurred : [Status Code : $statusCode]", statusCode);
}我的回应是
{
"x_id": "home"
}但json.decode(response.data)正在抛出异常。
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'奇怪的是,当我将Dio替换为http.get(url)时,json.decode(response.body)完全可以处理相同的响应
发布于 2019-01-25 14:15:27
您的响应数据已经是一个Map,因此您可以简单地这样做:
var response = await dio.get(_url);
var responseBody = response.data;
print(responseBody);它具有显式类型:
Response<Map> response = await dio.get(_url);
Map responseBody = response.data;
print(responseBody);发布于 2019-07-28 16:10:04
遵循这种方法,将响应作为字符串。现在你可以解码了..。
Response<String> response = await DioUtils.getInstance().get(JSON_API);
List responseJson = json.decode(response.data);
return responseJson.map((m) => new User.fromJson(m)).toList();https://stackoverflow.com/questions/54366431
复制相似问题