FlutterでHttp通信を実装

Flutter_icon Flutter
この記事は約6分で読めます。

この記事は以下の方を対象に書いています。

  • FlutterでHttp通信のサンプルコードが見たい方
  • Http通信の実装方法を知りたい方

準備

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に限らずどこでも使用できるので覚えていて損はありません。

ただ、用語がたくさんあるので、すべてを把握するのは難しいと思います。

徐々に覚えていくと良いと思います。

コメント

タイトルとURLをコピーしました