flutter - 使用 http Flutter 获取 API
问题描述
我正在尝试使用 http 包获取 api。它正在使用邮递员。它在正文中有表单数据。我无法弄清楚我们如何在标题中调用表单数据。我将附上邮递员图片以便更好地理解。
我的代码:
Future<LocationDetailsById> locationDetailsByID(BuildContext context,String locationID) async{
String url = baseUrl + "location/detailsbyid";
var body = {
"location_id":int.parse(locationID)};
Utils.showLoaderDialog(context);
final response = await http.post(Uri.parse(url), headers: {
'Accept': 'application/json',
'Content-Type': 'application/form-data',
'Authorization':'Bearer ${Utils.token}',
}, body: jsonEncode(body)
);
print("request $locationID");
print("response ${response.body}");
if(response.statusCode == 200){
Navigator.pop(context);
return LocationDetailsById.fromJson(json.decode(response.body));
}else {
return Utils.errorDialog(context, "Something went wrong");
}
}
解决方案
我怀疑您的正文格式不正确,因为它看起来像是针对接受 JSON 正文的端点的格式。
我会将帖子正文格式化为FormData
:
String url = baseUrl + "location/detailsbyid";
FormData formData = FormData.fromMap(body);
await http.post(url: url, body: formData, headers: {...});
推荐阅读
- rest - 邮递员:每个请求发送不同的身体进行测试?
- android - Kotlin:如何用嵌套列表映射列表
- c# - 我有异常错误“System.Data.dll 中出现‘System.Data.SqlClient.SqlException’类型的未处理异常‘ID’附近的语法不正确。”
- c# - 如何获取 Azure Blob 存储中目录的“上次修改时间”属性
- mongodb - ClassNotFoundException:com.mongodb.spark.rdd.partitioner.MongoPartition
- swift - 输入“我的错误?” 不符合协议“错误”
- java - 记录在循环未完成之前不反映在数据库中
- geometry - 极坐标中给定的 2 个向量的叉积的大小
- oracle - 表结构更新后更新表需要更长时间
- javascript - 如何在不发布的情况下在 lerna monorepo 中构建 docker 镜像