我正在创建一个新闻应用程序,我通过JSON获取数据,并且在每次运行我的应用程序时,我都无法理解(response HTTP
):
Exception has occurred. FormatException (FormatException: Unexpected character (at character 1 <HTML></HTML> ^ )
代码:
import 'package:http/http.dart' as http;
import 'dart:convert';
class Category {
int id;
String title;
Category({
this.id,
this.title
});
static Future<List<Category>> getCategories() async {
http.Response response = await http.get("url JSON"); // <- Here carash
Map<String, dynamic> map = json.decode(response.body);
List<Category> list = [];
for(var map in map['categories']){
list.add(
Category(id: map['id'], title: map['title'])
);
}
return list;
}
}
答案 0 :(得分:1)
我认为您的请求做错了,并且api无法处理该错误,并且我猜是将错误抛出为html。无论如何,您解码的方式不是正确的方式。
在执行http请求时要记住的几点:
nginx
用json.decode()
包装
块,当有错误时,您可以正确地看到发生了什么
和您的代码。try - catch
(不要总是使用动态类型,我的建议仅用于这种情况)。这样可以final
帮助您解决所面临的情况。FormatException
时,您将获得expired jwt
作为状态码。
因此,在这种情况下,仅检查状态码是不够的
因为500
的意思是500
。例如: 清单清单= [];
internal server error
希望此功能对您有帮助。请按照上述步骤操作,如果还有其他错误,请通知我。
答案 1 :(得分:0)
您收到的响应不是JSON,因此您的JSON无法解码。
您的服务器返回了一些HTML标记,这意味着您可能请求的URL错误,请在PostMan或Browser中检查URL,然后查看响应。