flutterの練習5:http
あとで、もう一度やろうとしたら Uncaught Error: XMLHttpRequest error. が出て動きませんでした。なんで?
次に何をやろうかとテーマを考えた結果、apiなどを使って、外部サイトから情報を取ってきて標示するみたいなのを作ろうと思います。
とりあえず、よく使われる天気予報で試してみます。DartPadで共有する方法がわからなかったので、これをDartPadにコピペすれば何をしようとしたかわかると思います。
ちょっとトリッキーだったのは、文字化けするところで、そのままだとutf8とは認識しないことでした。また、Convertのutf8.decodeの引数はListにしないとダメでした。
まれにタイムアウトエラーが発生するので、時間があればリトライ機能も試してみたいと思います。
import 'dart:convert' as convert;
import 'package:http/http.dart' as http;
void main(List arguments) async {
var url = Uri.parse('https://www.jma.go.jp/bosai/forecast/data/forecast/010000.json');
var response = await http.get(url);
if (response.statusCode == 200) {
var jsonResponse = convert.jsonDecode(convert.utf8.decode(response.body.runes.toList()));
var itemCount = jsonResponse.length;
print('気象台の数: $itemCount.');
for (var weatherData in jsonResponse){
print(weatherData['name'] + ' : ' + weatherData['officeCode']);
}
} else {
print('Request failed with status: ${response.statusCode}.');
}
}