【发布时间】:2021-03-30 07:16:52
【问题描述】:
我还是很陌生。我有一个要执行的网络调用。但在此之前,我需要检查设备是否具有互联网连接以及服务器是否是 api 服务器是否可以访问。我已设法检查互联网连接是否可用,但无法显示何时无法访问服务器
这是我到目前为止所做的:
login(username, password) async {
final String url = "http://10.0.2.2:8080/api/auth/signin"; // iOS
var responseJson;
try {
final response= await http.post(
url,
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(<String, String>{
'username': username,
'password': password,
}),
);
responseJson = _response(response);
} on SocketException {
throw FetchDataException('No Internet connection');
}
print(responseJson);
SharedPreferences prefs = await SharedPreferences.getInstance();
var parse = jsonDecode(responseJson.body);
await prefs.setString('username', parse["username"]);
await prefs.setString('message', parse["message"]);
await prefs.setString('accessToken', parse["accessToken"]);
return responseJson;
}
dynamic _response(http.Response response) {
switch (response.statusCode) {
case 200:
var responseJson = json.decode(response.body.toString());
print(responseJson);
return responseJson;
case 400:
throw BadRequestException(response.body.toString());
case 401:
case 403:
throw UnauthorisedException(response.body.toString());
case 500:
throw FetchDataException(
'Error occured while Communication with Server with StatusCode : ${response
.statusCode}');
default:
throw FetchDataException(
'Error occured while Communication with Server with StatusCode : ${response
.statusCode}');
}
}
我的登录按钮功能
RoundedButton(
text: "LOGIN",
press: () async {
if (_formKey.currentState.validate()) {
progressDialog.show();
await login(
username,
password,
);
SharedPreferences prefs =
await SharedPreferences.getInstance();
String token = prefs.getString("accessToken");
print(token);
if (token == null) {
progressDialog.hide();
showAlertsDialog(context);
} else {
showAlertzDialog(context);
}
}
},
)
每当我切换服务器并单击登录时,应用程序都会卡在显示登录的进度条。如何显示与服务器没有连接的警报?
【问题讨论】:
-
如果服务器出现问题而不是您的 http 响应状态码应该与 500 相关,因此对于状态码 500 会抛出错误消息。
-
嗨@SaifulIslam 如何将错误映射到警报对话框?
-
显示你调用
requestGET方法的代码