Search

Flutter http proxy with Charles

생성일
2022/03/16 14:29
태그
Flutter
속성

Flutter는 기본적으로 Charles에 http 통신이 캡쳐되지 않습니다.

flutter 내부 구조에 대한 이해가 필요하겠지만 Flutter에서 http pub을 통해 api 호출을 하게되면 Charles 에 통신이 캡쳐되지 않아 디버깅/개발에 어려움이 있습니다.

해결방법: HttpOverrides 를 이용합니다

Proxied_http_overrides.dart
class ProxiedHttpOverrides extends HttpOverrides { String _proxy; ProxiedHttpOverrides(this. _proxy); HttpClient createHttpClient(SecurityContext context) { return super.createHttpClient(context) ..findProxy = (uri) { return _proxy.isNotEmpty ? "PROXY $_proxy;" : 'DIRECT'; } ..badCertificateCallback = (X509Certificate cert, String host, int port) => Platform.isAndroid; } }
Dart
복사
위 파일을 추가합니다.
그 후, main() 이 있는 함수에서 runApp을 하기 전 HttpOverrides.global 에 ProxiedHttpOverrides 인스턴스를 주입합니다.
main.dart
void main() async { Constants.setEnvironment(Environment.STAGING); WidgetsFlutterBinding.ensureInitialized(); initializeJsonMapper(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); HttpOverrides.global = new ProxiedHttpOverrides("localhost:8888"); 👈👈👈👈👈 추가되는 라인 runApp(App()); }
Dart
복사

결과