【发布时间】:2020-01-29 17:13:27
【问题描述】:
我是 Flutter 的新手,我正在尝试发出 POST 请求并从名为 userRequestCode() 的 api 方法获取授权令牌。我试图将代码粘贴到/////// 中,但它不起作用。如果我将此代码粘贴到 userRequestCode() 中,如何捕获异常?请帮帮我。
Map<String, String> headers = {'Content-Type': 'application/json'};
Map<String, String> headersWithAuthorization = {'Content-Type': 'application/json', 'Authorization': 'bearer ${getMobileToken()}'};
Future<String> getMobileToken() async {
final SharedPreferences prefs = await _prefs;
return prefs.getString(_token) ?? '';
}
Future<bool> setMobileToken(String token) async {
final SharedPreferences prefs = await _prefs;
return prefs.setString(_token, token);
}
Future<http.Response> userRequestCode(String body) async {
final response = await http.post(baseUrl + " ", body: body, headers: headers);
return response;
}
Future<http.Response> userLogin(String body) async {
final response = await http.post(baseUrl + " ", body: body, headers: headersWithAuthorization);
return response;
}
class CodeResponse {
final String token;
CodeResponse({this.token});
factory CodeResponse.fromJson(Map<String, dynamic> json) {
return CodeResponse(
token: json['token'],
);
}
}
void _confirmPressed() {
var body = jsonEncode({
"appId": appId,
"phone": widget.phone.replaceAll("(", "").replaceAll(")", "").replaceAll("-", ""),
"code": "1234",
});
var data = json.encode(body);
print(data);
userConfirmCode(body).then((response) {
if (response.statusCode == 201) {
setState(() {
_isLoading = false;
});
// _codeResponse = CodeResponse.fromJson(json.decode(response.body));
// _token = _codeResponse.token;
// print(_token);
// setMobileToken(_token);
print(response.body);
print(response.statusCode);
Navigator.push(context, MaterialPageRoute(builder: (context) => Profile(oldPassword: widget.password)));
} else if (response.statusCode == 403) {
setState(() {
_isLoading = false;
});
_scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text("Wrong Code"),
backgroundColor: Colors.red,
));
print(response.statusCode);
} else {
print(response.statusCode);
setState(() {
_isLoading = false;
});
}
}).catchError((error) {
print('error : $error');
});
}
【问题讨论】: