iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
Mobile Development

在 Flutter 開發旅程的手札系列 第 27

Flutter Package - 如何使用dio在Proxyman抓封包(一)

  • 分享至 

  • xImage
  •  

今天會介紹如何使用Proxyman監聽網路事件,Proxyman的用途很廣,可以拿到api傳遞的封包、重新傳送一樣的POST API資料等等,今天我會以Simulator作為示範,並且使用我在Flutter Package - 串接api(一)的語法作為範例


Proxyman設定

下載Proxyman
https://ithelp.ithome.com.tw/upload/images/20221012/20152683J6pppg7E8u.png

開啟成功畫面
https://ithelp.ithome.com.tw/upload/images/20221012/20152683qiVd0E3Qt1.png

設定Simulator讓Proxyman連到
Certificate->Install Certificate on iOS -> Simulators

https://ithelp.ithome.com.tw/upload/images/20221012/20152683vCJwOmp0UL.png

完成下方三個步驟

https://ithelp.ithome.com.tw/upload/images/20221012/20152683DcySzAnm7C.png


開啟main.dart

找到AppRepository更改語法,將dio傳入

 Widget build(BuildContext context) {
    return MultiRepositoryProvider(
      providers: [
        RepositoryProvider<AppRepository>(create: (_) => AppRepository(dio: Dio())),
      ],
      child: MaterialApp(
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: const ProxymanScreen()),
    );
}

開啟app_repository.dart

新增AppRepository Function 並傳入dio
將AppRepository內的"192.168.107.122:9090"改為自己在proxyman上看到的ip

import 'dart:io';

import 'package:dio/adapter.dart';
import 'package:dio/dio.dart';

import 'api.dart';
import 'get_api_data_response.dart';

class AppRepository {
  final Dio dio;
  AppRepository({required this.dio}) {
    (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
      client.findProxy = (url) => 'PROXY 192.168.107.122:9090';
      client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
    };
  }
  late final RestClient _client = RestClient(dio);
  Future<GetApiDataResponse> getApiData() async {
    return _client.getApiData();
  }
}

https://ithelp.ithome.com.tw/upload/images/20221012/20152683PvT8sMC7re.png


重新執行Simulator後就會看到Proxyman的左側多了Remote Devices,點擊下去後就能看到Proxyman撈到的封包囉
https://ithelp.ithome.com.tw/upload/images/20221012/20152683q9C4vl70U3.png


上一篇
Flutter Package — 用Agora製作通話功能(二)
下一篇
Flutter Package - 如何使用dio在Proxyman抓封包(二)
系列文
在 Flutter 開發旅程的手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言