準備
FlutterでHttp通信を実現するための一番簡単な方法は、ライブラリを使用することです。
今回は、以下のライブラリを使用します。
このライブラリを使用して作成したアプリを公開する際は、
ライセンスをよく読んでから使用してください。
ライブラリのインストール
インストールは簡単で、Flutterプロジェクトを開いているAndroidStudioのターミナルで
以下のコマンドを実行するだけです。
flutter pub add http
実行が出来たら、「pubspec.yaml」に「http」が追加されます。
Http通信の実装
準備は完了したので、さっそく実装していきます。
まずは、main.dartをきれいにしてボタンだけ追加しておきます。
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
debugShowCheckedModeBanner: false,
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: ElevatedButton(
child: const Text('HTTP START'),
onPressed: () {
// ここでhttp通信をする
}
),
),
);
}
}
GET送信
まずはGET送信からです。
onPressedプロパティの中に処理を書くと長くなってしまう場合があるので、
関数を作って、その関数をonPressedプロパティの中で呼び出すようにします。
(関数名のセンスが無くてすみません。。)
Future<void> getTest() async {
// Uriの設定(第1引数はサーバー、第2引数はエンドポイント)
Uri uri = Uri.http('localhost:3000', '/');
// レスポンスを受けとる
var response = await http.get(uri);
// レスポンスの処理(必要に応じてエラーハンドリングも)
print(response.body);
}
POST送信
次は一番使用頻度の高いPOST送信のサンプルコードです。
Future<void> postTest() async {
// Uriの設定(第1引数はサーバー、第2引数はエンドポイント)
Uri uri = Uri.http('localhost:3000', '/postTest');
// 送信するリクエスト情報
Map<String, String> sendData = {
'name': '工場長',
'age': '28',
};
// レスポンスの受け取り(bodyにリクエスト情報を格納する)
var response = await http.post(uri, body: sendData);
// レスポンスの処理
print(response.body);
}
headerの追加
次は、headerの設定方法です。
認証情報などをヘッダーに格納したい場合は、以下のように設定することができます。
Future<void> postTestWithHeader() async {
// Uriの設定(第1引数はサーバー、第2引数はエンドポイント)
Uri uri = Uri.http('localhost:3000', '/postTest');
// 送信するリクエスト情報
Map<String, String> data = {
'name': '工場長',
'age': '28',
};
// json形式に変換する
var jsonData = json.encode(data);
// ヘッダー情報
Map<String, String> headers = {
'Authorization': '資格情報', // token等をヘッダーに格納したい場合は設定可能
'Content-Type': 'application/json', // 送信するデータの形式に応じて適切なContent-Typeを設定
};
// レスポンスの受け取り(bodyにリクエスト情報を格納する)
var response = await http.post(uri, headers: headers, body: jsonData);
// レスポンスの処理
print(response.body);
}
最後に
ここまで読んでいただきありがとうございます。
Httpは、Flutterに限らずどこでも使用できるので覚えていて損はありません。
ただ、用語がたくさんあるので、すべてを把握するのは難しいと思います。
徐々に覚えていくと良いと思います。
コメント