Dart 截断 HttpClientResponse
Dart Truncates HttpClientResponse
几天来一直在努力解决这个问题。该代码成功地为我提供了 JSON 数据,但缺少许多块,使我无法将其解析为对象。代码和输出如下。研究了很多,欢迎任何建议。
class TBAState extends State<TBAData>{
String url = "http://www.thebluealliance.com/api/v3/status";
HttpClient myhttp = new HttpClient();
List data;
List cellTitle;
Future getSWData() async {
myhttp.getUrl(Uri.parse(url)).then((HttpClientRequest request) {
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXXX");
return request.close();
}).then((HttpClientResponse response) {
response.transform(utf8.decoder).listen((contents) {
// print(contents);
});
});
myhttp.get('www.thebluealliance.com', 80, '/api/v3/teams/0/simple')
.then((HttpClientRequest request){
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXX");
return request.close();
})
.then((HttpClientResponse response) {
response.transform(utf8.decoder).listen((content) {
//buffer.writeAll(content.toString());
print(content);
});
});
}
}
一些输出:
"team_number": 6
},
{<…> <- 截断
flutter:Brookman & Parkville 高中和数学中心,
科学与计算机科学",
"nickname": "Team007",
"state_prov": "MD",
"team_number": 7
},
{
Error:
Dart Error: Unhandled exception:
FormatException: Unterminated string (at line 42, character 155)
...y/US Army Aberdeen Test Center/Moffatt & Nichol/Baltimore Area Alliance/Mr.
^
#0 _ChunkedJsonParser.fail (dart:convert/runtime/libconvert_patch.dart:1358:5)
#1 _ChunkedJsonParser.close (dart:convert/runtime/libconvert_patch.dart:504:9)
#2 _parseJson (dart:convert/runtime/libconvert_patch.dart:30:10)
#3 JsonDecoder.convert (dart:convert/json.dart:540:36)
#4 JsonCodec.decode (dart:convert/json.dart:167:41)
#5 TBAState.getSWData
已修复:问题出在 HttpClientResonse 的转换中。正确代码:
class TBAState extends State<TBAData>{
HttpClient myhttp = new HttpClient();
List<dynamic> data;
List cellTitle;
List<Team> teamData;
Future getSWData() async {
myhttp.get('www.thebluealliance.com', 80, '/api/v3/status').then((HttpClientRequest request) {
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXX");
return request.close();
}).then((HttpClientResponse response) {
response.transform(utf8.decoder).listen((contents) {
//print(contents);
});
});
myhttp.get('www.thebluealliance.com', 80, '/api/v3/teams/0/simple')
.then((HttpClientRequest request) {
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXX");
return request.close();
})
.then((HttpClientResponse response) {
response.transform(utf8.decoder).transform(json.decoder).listen((data) {
print(data.toString());
setState(() {
TeamList myTeamsL = new TeamList.fromJson(data);
teamData = myTeamsL.teams;
});
});
});
}
}
几天来一直在努力解决这个问题。该代码成功地为我提供了 JSON 数据,但缺少许多块,使我无法将其解析为对象。代码和输出如下。研究了很多,欢迎任何建议。
class TBAState extends State<TBAData>{
String url = "http://www.thebluealliance.com/api/v3/status";
HttpClient myhttp = new HttpClient();
List data;
List cellTitle;
Future getSWData() async {
myhttp.getUrl(Uri.parse(url)).then((HttpClientRequest request) {
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXXX");
return request.close();
}).then((HttpClientResponse response) {
response.transform(utf8.decoder).listen((contents) {
// print(contents);
});
});
myhttp.get('www.thebluealliance.com', 80, '/api/v3/teams/0/simple')
.then((HttpClientRequest request){
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXX");
return request.close();
})
.then((HttpClientResponse response) {
response.transform(utf8.decoder).listen((content) {
//buffer.writeAll(content.toString());
print(content);
});
});
}
}
一些输出:
"team_number": 6 },
{<…> <- 截断
flutter:Brookman & Parkville 高中和数学中心,
科学与计算机科学",
"nickname": "Team007",
"state_prov": "MD",
"team_number": 7
},
{
Error:
Dart Error: Unhandled exception:
FormatException: Unterminated string (at line 42, character 155)
...y/US Army Aberdeen Test Center/Moffatt & Nichol/Baltimore Area Alliance/Mr.
^
#0 _ChunkedJsonParser.fail (dart:convert/runtime/libconvert_patch.dart:1358:5)
#1 _ChunkedJsonParser.close (dart:convert/runtime/libconvert_patch.dart:504:9)
#2 _parseJson (dart:convert/runtime/libconvert_patch.dart:30:10)
#3 JsonDecoder.convert (dart:convert/json.dart:540:36)
#4 JsonCodec.decode (dart:convert/json.dart:167:41)
#5 TBAState.getSWData
已修复:问题出在 HttpClientResonse 的转换中。正确代码:
class TBAState extends State<TBAData>{
HttpClient myhttp = new HttpClient();
List<dynamic> data;
List cellTitle;
List<Team> teamData;
Future getSWData() async {
myhttp.get('www.thebluealliance.com', 80, '/api/v3/status').then((HttpClientRequest request) {
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXX");
return request.close();
}).then((HttpClientResponse response) {
response.transform(utf8.decoder).listen((contents) {
//print(contents);
});
});
myhttp.get('www.thebluealliance.com', 80, '/api/v3/teams/0/simple')
.then((HttpClientRequest request) {
request.headers.set("accept", "application/json");
request.headers.set("X-TBA-Auth-Key", "XXXX");
return request.close();
})
.then((HttpClientResponse response) {
response.transform(utf8.decoder).transform(json.decoder).listen((data) {
print(data.toString());
setState(() {
TeamList myTeamsL = new TeamList.fromJson(data);
teamData = myTeamsL.teams;
});
});
});
}
}