api - 我无法使用 Flutter 发出发布请求(注册)
问题描述
我想发出一个发布请求,但它似乎不起作用......我不知道是什么错误,但是当我点击提交按钮时没有任何反应,我不知道数据是否尚未发布...... .是我的发布方法有问题还是其他任何可能发生的错误......有人可以帮我解决这个问题或指导我以正确的方式发出发布请求。您的帮助将不胜感激。
我的代码
void registerUser() async {
// if (_formKey.currentState.validate()) {
setState(() {
_loading = true;
});
String email = _emailController.text;
String password = _passwordController.text;
String name = _nameController.text;
String username = _usernameController.text;
String phone = _phoneController.text;
String password_confirmation = _password_confirmationController.text;
User user = await authentication.register(
username, password, name, password_confirmation, phone, email);
if (user != null) {
setState(() {
_loading = false;
});
Navigator.push(
context, MaterialPageRoute(builder: (context) => MyWidget()));
// Navigator.pushNamed(context, 'Mywidget');
}
{
setState(() {
_loading = false;
});
}
// }
}
我的按钮代码:
Container(
child: RaisedButton(
textColor: Colors.white,
color: kPrimaryColor,
child: Text("S'inscrire"),
onPressed: () {
if (_formKey.currentState.validate()) {
registerUser();
}
/* Navigator.push(
context,
MaterialPageRoute(
builder: (context) => MyWidget()),
);*/
// Navigator.pushNamed(context, 'Mywidget');
},
shape: new RoundedRectangleBorder(
borderRadius:
new BorderRadius.circular(30.0),
),
),
width: 250,
padding: EdgeInsets.all(15),
)
身份验证.dart:
class Authentication {
//String token;
Future<User> register(String name, String password_confirmation, String email,
String phone, String password, String username) async {
// await checkInternet();
Map<String, String> headers = {
'Content-type': 'application/json',
'Accept': 'application/json',
};
Map<String, String> body = {
'name': name,
'email': email,
'phone': phone,
'password': password,
'password_confirmation': password_confirmation,
'username': username,
};
inspect(body);
inspect(headers);
var response = await http.post(Uri.parse(ApiUtil.AUTH_REGISTER),
headers: headers, body: jsonEncode(body));
inspect(response);
if (response.statusCode == 201) {
var body = jsonDecode(response.body);
var data = body['user'];
User user = User.fromJson(data);
return user;
}
return null;
}
解决方案
看来您不需要对正文进行编码,因为它已经是一个 json 映射。
var response = await http.post(Uri.parse(ApiUtil.AUTH_REGISTER),
headers: headers, body: body);
暗示:
您可以使用 Flutter DevTools 或简单地打印每个步骤以查看发生了什么以及哪个步骤失败。
推荐阅读
- octave - 如何在 Octave 中获取包含目录内容的数组?
- sql - ODBC 对象连接问题 - 对 65k 行的开放限制
- c# - 通过一个数据库请求获取所有数据作为列表
- c++ - 如何解决由于字符串到 json 转换而产生的异常?
- oracle - 选择查询联接或分组依据
- c# - .Net Core 控制台应用程序中 DbContext 的依赖注入:在前一个操作完成之前在此上下文上启动了第二个操作
- mongodb - 试图在 localhost 上运行我的项目——如何在 Mac 终端中使用“mongod”命令而不是“sudo mongod”?
- python - 有没有一种快速的方法可以从 pandas DataFrame 的一列中的所有行中删除特定字符?
- python - 当我运行程序时它会抛出错误,并且在 vs 代码中它给出“错误:location.condition 不可调用”
- python - 从滑块更改回调不更新我在 jupyter 实验室的散景中的情节?