Как настроить пакет flutter dio ⇐ Android
-
Anonymous
Как настроить пакет flutter dio
Я хочу использовать пакет Dio для своего сетевого запроса, но у меня возникает ошибка с кодом состояния 400. Мой сервер принимает данные в формате application/json, но я не знаю, почему я получаю ошибку. Я действительно протестировал конечная точка как в почтальоне, так и в Swagger, и она работает как положено. Вот моя конфигурация. Я проверил другие предложения здесь, но не смог помочь мне решить проблему.
класс NetworkRequestUtil { статический NetworkRequestUtil _instance = NetworkRequestUtil._internal(); фабрика NetworkRequestUtil() { вернуть _экземпляр; } поздний Дио Дио; NetworkRequestUtil._internal() { Опции BaseOptions = BaseOptions( baseUrl: AppConstants.APP_BASE_URL, ConnectTimeout: Продолжительность (секунд: 10), getTimeout: Продолжительность (секунд: 5), заголовки: {}, contentType: "application/json: charset=utf-8", Тип ответа: ТипОтвета.json); Дио = Дио (варианты); } Будущий пост (Строковый путь, {динамические данные, Map? queryParameters}) асинхронный { вар ответ = ждут dio.post(путь, данные: данные, параметры запроса: параметры запроса); print("Мои данные ответа: ${response.toString()}"); print("Мой код статуса: ${response.statusCode.toString()}"); вернуть ответ.данные; } класс SignInRepository{ вход в систему ({SignInModel? SignInModel}) асинхронный { вар ответ = ожидание NetworkRequestUtil() .post(AppConstants.LOGIN_URL,queryParameters:signInModel?.toJson()); print("Ответ из репозитория: ${response.toString()}"); } } класс SignInModel{ Нить? электронная почта; Нить? пароль; SignInModel({this.email,this.password}); Map toJson()=>{ «электронная почта»: электронная почта, «пароль»:пароль }; } класс SignInController{ Future handleSignIn(BuildContext context)async { окончательное состояние = context.read().state; Строка emailAddress = state.email; Строковый пароль = state.password; пытаться{ SignInModel SignInModel = SignInModel (электронная почта: адрес электронной почты, пароль: пароль); процессЛогин (signInModel); }поймать(е){ toastInfo(msg: e.toString()); } } Будущее processLogin(SignInModelsignInModel)async { EasyLoading.show( индикатор: CircularProgressIndicator(), тип маски: EasyLoadingMaskType.clear, увольнениеОнТап: правда ); var result = locator.get().login(signInModel:signInModel); print("Результат: ${result.toString()}"); } } конечный локатор = GetIt.instance; недействительный setUpLocator(){ locator.registerLazySingleton(() => SignInRepository()); locator.registerLazySingleton(() => SignInController());
Я хочу использовать пакет Dio для своего сетевого запроса, но у меня возникает ошибка с кодом состояния 400. Мой сервер принимает данные в формате application/json, но я не знаю, почему я получаю ошибку. Я действительно протестировал конечная точка как в почтальоне, так и в Swagger, и она работает как положено. Вот моя конфигурация. Я проверил другие предложения здесь, но не смог помочь мне решить проблему.
класс NetworkRequestUtil { статический NetworkRequestUtil _instance = NetworkRequestUtil._internal(); фабрика NetworkRequestUtil() { вернуть _экземпляр; } поздний Дио Дио; NetworkRequestUtil._internal() { Опции BaseOptions = BaseOptions( baseUrl: AppConstants.APP_BASE_URL, ConnectTimeout: Продолжительность (секунд: 10), getTimeout: Продолжительность (секунд: 5), заголовки: {}, contentType: "application/json: charset=utf-8", Тип ответа: ТипОтвета.json); Дио = Дио (варианты); } Будущий пост (Строковый путь, {динамические данные, Map? queryParameters}) асинхронный { вар ответ = ждут dio.post(путь, данные: данные, параметры запроса: параметры запроса); print("Мои данные ответа: ${response.toString()}"); print("Мой код статуса: ${response.statusCode.toString()}"); вернуть ответ.данные; } класс SignInRepository{ вход в систему ({SignInModel? SignInModel}) асинхронный { вар ответ = ожидание NetworkRequestUtil() .post(AppConstants.LOGIN_URL,queryParameters:signInModel?.toJson()); print("Ответ из репозитория: ${response.toString()}"); } } класс SignInModel{ Нить? электронная почта; Нить? пароль; SignInModel({this.email,this.password}); Map toJson()=>{ «электронная почта»: электронная почта, «пароль»:пароль }; } класс SignInController{ Future handleSignIn(BuildContext context)async { окончательное состояние = context.read().state; Строка emailAddress = state.email; Строковый пароль = state.password; пытаться{ SignInModel SignInModel = SignInModel (электронная почта: адрес электронной почты, пароль: пароль); процессЛогин (signInModel); }поймать(е){ toastInfo(msg: e.toString()); } } Будущее processLogin(SignInModelsignInModel)async { EasyLoading.show( индикатор: CircularProgressIndicator(), тип маски: EasyLoadingMaskType.clear, увольнениеОнТап: правда ); var result = locator.get().login(signInModel:signInModel); print("Результат: ${result.toString()}"); } } конечный локатор = GetIt.instance; недействительный setUpLocator(){ locator.registerLazySingleton(() => SignInRepository()); locator.registerLazySingleton(() => SignInController());
Мобильная версия