Flutter(Dart)でHTTPリクエストする場合には、httpパッケージを利用するのが便利です。
こちらを利用して、以下のようなJSONファイルをHTTPサーバーから取得するコードを書きました。
import "package:http/http.dart" as http; Future<String> fetch(String url) async { final response = await http.get(Uri.parse(url))); return response.body; }
しかし、ローカルで立てたHTTPサーバーからの取得では大丈夫でしたが、S3からの取得では文字化けしてしまいました。
どうやら、Content-Type
に charset=utf8
が含まれていないと、 LATIN-1
と解釈されてしまうようです。
そのため、bodyBytes
を取得した上で、明示的にUTF-8に変換を行うことで対応できます。
import "dart:convert"; import "package:http/http.dart" as http; Future<String> fetch(String url) async { final response = await http.get(Uri.parse(url))); return utf8.decode(response.bodyBytes); }