首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DIO响应解码问题

DIO响应解码问题
EN

Stack Overflow用户
提问于 2019-01-25 13:38:16
回答 2查看 26.1K关注 0票数 18

我正在使用Dio进行HTTP请求

代码语言:javascript
复制
  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);
    }

我的回应是

代码语言:javascript
复制
{
"x_id": "home"
}

json.decode(response.data)正在抛出异常。

代码语言:javascript
复制
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'

奇怪的是,当我将Dio替换为http.get(url)时,json.decode(response.body)完全可以处理相同的响应

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-25 14:15:27

您的响应数据已经是一个Map,因此您可以简单地这样做:

代码语言:javascript
复制
var response = await dio.get(_url);
var responseBody = response.data;
print(responseBody);

它具有显式类型:

代码语言:javascript
复制
Response<Map> response = await dio.get(_url);
Map responseBody = response.data;
print(responseBody);
票数 45
EN

Stack Overflow用户

发布于 2019-07-28 16:10:04

遵循这种方法,将响应作为字符串。现在你可以解码了..。

代码语言:javascript
复制
 Response<String> response = await DioUtils.getInstance().get(JSON_API);
 List responseJson = json.decode(response.data);
 return responseJson.map((m) => new User.fromJson(m)).toList();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54366431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档