gpt4 book ai didi

flutter - 发布请求正文未正确发送

转载 作者:行者123 更新时间:2023-12-03 04:43:30 27 4
gpt4 key购买 nike

所以我正在尝试进行注册 POST 请求,要发送的正文应如下所示:

{
"user": {
"email": "omartest14@dw.coo",
"firstname": "string",
"lastname": "string",
"gender": "female",
"phone_number": "+2120694263542",
"birthdate": "2020-06-24",
"country": "EGY"
}
}
所以我首先创建了一个 RegisterUpsert 模型,它的类如下所示:
class RegisterUpsert {
String email;
String firstname;
String lastname;
String gender;
String phoneNumber;
String birthdate;
String country;

RegisterUpsert();

RegisterUpsert.fromJson(Map<String, dynamic> json)
: email = json['email'],
firstname = json['firstname'],
lastname = json['lastname'],
gender = json['gender'],
phoneNumber = json['phone_number'],
birthdate = json['birthdate'],
country = json['country'];

Map<String, dynamic> toJson() => {
'email': email,
'firstname': firstname,
'lastname': lastname,
'gender': gender,
'phone_number': phoneNumber,
'birthdate': birthdate,
'country': country,
};
}
现在,我已经完成了数据收集和处理流程,并拥有了一个 RegisterUpsert 实例,其中包含我需要的所有数据,即 registerBodyFinal。 ,现在我试图在这里调用它:
    debugPrint({"user": registerBodyFinal.toJson()}.toString());
showLoading(context);
final response = await http.post(url,
body: {
"user": {registerBodyFinal.toJson()}
}.toString());
Navigator.pop(context);
debugPrint 似乎可以按我的意愿打印正文,但这似乎不是要发送的内容,因为在正文工作时尝试使用具有确切 debugPrinted 行的 postman ,但是 flutter 应用程序上的响应表明服务器正在获取不正确/缺少 JSON。我在这个问题中展示的第一个 body 和我在 flutter 中发布的 body 之间有什么区别?
我的猜测是,使用 toString 解析会将我所有的括号等解析为字符串的一部分,这会破坏它吗?但是除非我使用 .toString() 我在运行时得到一个 castError : InternalLinkedHashMap<String,Dynamic> is not a subtype of type 'String' in type cast谢谢你的帮助。

最佳答案

当你有一棵 JSON 树时,不要对它的一部分进行编码,然后将它们进一步包含在父映射中。将映射(或带有 toJson 方法返回映射的类)包含在父映射中,最后调用 json.encode一次在根 map (或列表)上。
您需要的正确语法是:

  var upsert = RegisterUpsert()
..email = 'e'
..firstname = 'f'
..lastname = 'l'
..gender = 'f'
..phoneNumber = 'ph'
..birthdate = 'today'
..country = 'nl';

var bodyMap = <String, dynamic>{'user': upsert};

final response = await http.post(url, body: json.encode(bodyMap));

关于flutter - 发布请求正文未正确发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62715430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com