颤振:由于错误类型'String'我无法从服务器获取数据,该错误类型不是"Map<字符串,动态"的子类型>



请帮我解决这个问题:

当向服务器发出请求时,我得到错误类型"String"不是类型"Map<字符串,动态>'

我使用改装请求:

此Api服务类别:

@RestApi(baseUrl: kBaseUrl)
abstract class RecipesApiService {
factory RecipesApiService(Dio dio, {String baseUrl}) = _RecipesApiService;
@GET('my=endpoint')
Future<HttpResponse<AboutResponse>> about();
}

此响应模型:

class AboutResponse {
final String page;

AboutResponse({this.page });
factory AboutResponse.fromJson(Map<String, dynamic> json) {
return AboutResponse(
page: json['page'] as String,
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['page'] = page;
return data;
}
}

这里的困难在于,我收到了来自服务器的以下形式的响应:

{"page":"u041e
u043fu0440u0438u043bu043eu0436u0435u043du0438u0438"}

并且显然他不能将其投射到Map<字符串,动态>。我试图将生成的类中的一些代码更改为:

Api服务生成类

@override
Future<HttpResponse<AboutResponse>> about() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'my=endpoint',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = AboutResponse.fromJson(_result.data);
final httpResponse = HttpResponse(value, _result);
return httpResponse;
}

和线路:

final _result = await _dio.request<Map<String, dynamic>>

我换了

final _result = await _dio.request<String>

并且如果我输出"0"_结果";到控制台,然后它会向我显示来自服务器的内容。

请帮忙,也许我应该在改造中做一些设置,这样我就可以从服务器接收数据,或者我可以去其他地方看看吗?

谢谢!

看起来响应不是从JSON解码的,通常dio不需要反序列化。

尝试解码模型类中的JSON响应。

factory AboutResponse.fromJson(String json) {
final Map<String, dynamic> decodedJSON = jsonDecode(json);
return AboutResponse(
page: decodedJSON['page'] as String,
);
}

相关内容

最新更新