将数据作为映射发送到api



你好,我正在尝试将包含[姓名、电话、密码、密码2、myphone]的数据发送为映射

这是我的登录功能,它工作得很好,我想用相同的逻辑进行标记

login(Map body) async {
var response = await api.post('url', body);
if (response.statusCode == 201) {
var rawDara = json.decode(response.body);
setToken(rawDara['token'].toString().trim());
_status = Status.authenticated;
notifyListeners();
}
}

我试着在地图内循环,但没有成功,当我点击它时,没有显示任何结果或问题Sting秀我只接受可以为null的字符串

signUp(Map<String, String> userData) {
String email = userData['name'];
String password = userData['password'];
String firstName = userData['password2'];
String lastName = userData['phone'];

期望将数据发送到api,并且我已经在api文件中编写了错误处理程序

Future<http.Response> post(String url, Map body) async {
var response = await http.post(Uri.parse(baseUrl + url), body: body);
if (kDebugMode) {
print('Post On: $baseUrl$url n with body: $body');
print(
'Status: ${response.statusCode} n with response: ${response.body}');
}
return response;
}

登录中的后期工作很好

您使用的是HTTP软件包flutter。

HTTP包中,当您获得响应时,它将以String的形式出现,因此您可以将其转换为获得实际的数据(响应),如

import 'dart:convert'; 
final result = jsonDecode(response.body);
print('result  -> $result '); // your api result

同样,当您进行POST请求时,您必须仅在HTTP POST请求中以String的形式传递(发送)数据

通过这种方式,您可以将map转换为String

final sendBody =  jsonEncode(body), // convert your body(map) into String

现在,您可以在POST请求中发送sendBody(您的地图/身体)

Future<http.Response> post(String url, Map<String,dynamic> body) async {
try{
Response response = await http.post(
Uri.parse(baseUrl + url), 
body: sendBody , // or use jsonEncode(body)
);
return response;
} catch(e){
print('error : $e'); 

}
}

希望这对你有帮助!

最新更新