如何在flutter中调用API传递JSON格式的主体数据


dynamic body = {
'doctor_availablity_done': StatusEnum.Yes.index.toString(),
'emergency_call': emergencyCall,
'weekends': {
"days": selectedWeekendList.toString(),
"time_period": {
"morning": {
"start_time": weekendMorningStart.value.toString(),
"end_time": weekendMorningEnd.value.toString()
},
"afternoon": {
"start_time": weekendAfternoonStart.value.toString(),
"end_time": weekendAfternoonEnd.value.toString()
},
"evening": {
"start_time": weekendEveningStart.value.toString(),
"end_time": weekendEveningEnd.value.toString()
},
"night": {
"start_time": weekendNightStart.value.toString(),
"end_time": weekendNightStart.value.toString()
}
}
}.toString(),
'weekdays': {
"days": selectedWeekdaysList.toString(),
"time_period": {
"morning": {
"start_time": weekdaysMorningStart.value.toString(),
"end_time": weekdaysMorningEnd.value.toString()
},
"afternoon": {
"start_time": weekdaysAfternoonStart.value.toString(),
"end_time": weekdaysAfternoonEnd.value.toString()
},
"evening": {
"start_time": weekdaysEveningStart.value.toString(),
"end_time": weekdaysEveningEnd.value.toString()
},
"night": {
"start_time": weekdaysNightStart.value.toString(),
"end_time": weekdaysNightStart.value.toString()
}
}
}.toString(),
};

我想以JSON格式传递整个正文内容。以上数据为字符串。如何在JSON中传递数据。我试图在jsonEncode(body.toString(((中传递它,但它抛出了无效数据的错误。

var头={"授权":'Bearer eyJ0eAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdG90YWxoZWFsdGhzb2x1dGlvbnMub3JnLmluXC9tZWRpY2FsLWRldlwvYXBpXC9kb2N0b3JcL2xvZ2luIwiaWF0IjoxNjYwMDQyMzg3LCJleHAiOjE2NjAxMjg3Dcsim5iZiI6MTY2MDA0MjM4NywianRpIjoiMzI2xsNzEy'bElYaktqSyIsInN1YiI6MTYzLCJwcnYiOiiyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3MY3In0.5FbSnY-tPQMdyNFxdWmPuxCmQAPUcuteWkKPJT3XTE'};

var request = http.MultipartRequest(
'POST',
Uri.parse(
url));
request.fields.addAll(jsonEncode(body));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
} else {
print(response.reasonPhrase);
}

你可以这样做

var body = {};
var weekends = {};
var timePeriod = {};
body["doctor_availablity_done"] = "1";
body["emergency_call"] = "emergencyCall";
weekends["days"] = "selectedWeekendList.toString()";
timePeriod["morning"] = {"start_time": "ads", "end_time": "qsasds"};
weekends["time_period"] = timePeriod;
body["weekends"] = weekends;
print(jsonEncode(body));

可以附加的其他关键点。这只是样品。

编辑

您不需要多部分请求,因为您不发送任何文件。

var response = await http.post(Uri.parse(url) , headers: headers , body:  jsonEncode(body) );
if (response.statusCode == 200) {
print(response.body);
} else {
print(response.body);
}

希望这对你有帮助。

你不应该在周末和工作日调用toString(),也不应该在结果上调用,所以像这个

dynamic body = {
'doctor_availablity_done': StatusEnum.Yes.index.toString(),
'emergency_call': emergencyCall,
'weekends': {
"days": selectedWeekendList.toString(),
"time_period": {
"morning": {
"start_time": weekendMorningStart.value.toString(),
"end_time": weekendMorningEnd.value.toString()
},
"afternoon": {
"start_time": weekendAfternoonStart.value.toString(),
"end_time": weekendAfternoonEnd.value.toString()
},
"evening": {
"start_time": weekendEveningStart.value.toString(),
"end_time": weekendEveningEnd.value.toString()
},
"night": {
"start_time": weekendNightStart.value.toString(),
"end_time": weekendNightStart.value.toString()
}
}
},
'weekdays': {
"days": selectedWeekdaysList.toString(),
"time_period": {
"morning": {
"start_time": weekdaysMorningStart.value.toString(),
"end_time": weekdaysMorningEnd.value.toString()
},
"afternoon": {
"start_time": weekdaysAfternoonStart.value.toString(),
"end_time": weekdaysAfternoonEnd.value.toString()
},
"evening": {
"start_time": weekdaysEveningStart.value.toString(),
"end_time": weekdaysEveningEnd.value.toString()
},
"night": {
"start_time": weekdaysNightStart.value.toString(),
"end_time": weekdaysNightStart.value.toString()
}
}
},
};
String json = jsonEncode(body);
Object data = {
"username": userName,
"password": password,
};

Uri url = Uri.parse("url");
final response = await http.post(url, body: data);

Map<String, dynamic> apiMap = new Map();
apiMap.putIfAbsent("username", () => ""user_name);
apiMap.putIfAbsent("pwd", () => "pwd));
Uri url = Uri.parse("url");
final response = await http.post(url, body: json.encode(apiMap),);

最新更新