(Flutter) HTTP-запрос не отвечает на новейшие устройства AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 (Flutter) HTTP-запрос не отвечает на новейшие устройства Android

Сообщение Anonymous »

Я использую Flutter для создания кроссплатформенного приложения, и эта ошибка возникала только для новейших устройств Android, таких как Galaxy S23 Ultra и Galaxy S24+.

Код: Выделить всё

Future register(
String name,
String password,
String phoneNo,
String birthday,
String gender
) async {
var pref = await SharedPreferences.getInstance();
var token = pref.getString(SharedPreferencesKeys.fcmToken) ?? '';
Map data = {
'username': name,
'userbirth': birthday,
'gender': gender,
'phoneno': phoneNo,
'password': password,
'fcm': token,
};
var url = Uri.parse(Url.getSignupUrl());
var body = json.encode(data);
try {
var response = await http.post(
url,
headers: {
'Content-Type': 'application/json',
},
body: body,
).timeout(const Duration(seconds: 10));

if (response.statusCode == 200) {
Map decodedJson = json.decode(response.body); // for future use
String accessToken = decodedJson['result']['tokens']['accessToken']['accessToken'];
int accessTokenTimeout = decodedJson['result']['tokens']['accessToken']['timeout'];
String refreshToken = decodedJson['result']['tokens']['refreshToken']['refreshToken'];
int refreshTokenTimeout = decodedJson['result']['tokens']['refreshToken']['timeout'];
String userId = decodedJson['result']['userId'];
const storage = FlutterSecureStorage(
aOptions: AndroidOptions(
encryptedSharedPreferences: true,
)
);
print('register: $userId, $name, $phoneNo, $birthday, $sex');
storage.write(key: SecureStorageKeys.userId, value: userId);
storage.write(key: SecureStorageKeys.name, value: name);
storage.write(key: SecureStorageKeys.phoneNo, value: phoneNo);
storage.write(key: SecureStorageKeys.birthday, value: birthday);
storage.write(key: SecureStorageKeys.sex, value: sex);
await pref.setString(SharedPreferencesKeys.accessToken, accessToken);
await pref.setString(SharedPreferencesKeys.refreshToken, refreshToken);
await pref.setInt(SharedPreferencesKeys.accessTokenTimeout, accessTokenTimeout);
await pref.setInt(SharedPreferencesKeys.refreshTokenTimeout, refreshTokenTimeout);
return(response.statusCode);
} else {
return(-1);
}
} catch (e) {
return(-1);
}
}
Выше приведен код, на котором я застрял. Мой коллега, работающий в бэкэнде, говорит, что он не перехватывает никаких запросов. Очевидно, это ошибка клиента.
Кроме того, конечная точка API — http://WW.XXX.YYY.ZZZ:3000/my/route
Я думал, что код работает, потому что он отлично работал на любых устройствах iOS и некоторых более старых версиях устройств Android (Galaxy Tab A7 Lite и эмуляторы Android от Android Studio — они используют Android 14)
Я также добавлен файл конфигурации main/res/xml/network_security_config.xml

Код: Выделить всё



WW.XXX.YYY.ZZZ



и это мой манифест Android в разделе main Flutter Doctor, если кому интересно

Код: Выделить всё

[✓] Flutter (Channel stable, 3.24.0, on macOS 14.2 23C64 darwin-arm64, locale ko-KR)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.1)
[✓] VS Code (version 1.94.2)
[✓] VS Code (version 1.91.1)
[✓] Network resources
Есть ли у кого-нибудь идеи, в чем я ошибаюсь?

Подробнее здесь: https://stackoverflow.com/questions/791 ... id-devices
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»