【发布时间】:2021-12-30 17:25:15
【问题描述】:
当我在 Flutter 中使用 Dio 包时,我使用 FormData 在服务器上请求并使用 Token 进行身份验证。我收到一个错误:“DioError [DioErrorType.response]:Http 状态错误 [413]”。看来我发送了一个大查询。
这个问题的结果是什么?
帮帮我!
提前致谢!
更新:我找到了原因。它是“当 ListFile 的图像参数大于 1、2 时 => Http 状态错误 [413]”。但我不知道找到解决办法。
代码:
Future createPost(FormPostingArgument? argument) async {
Map<String, dynamic> param = {};
param['plan_id'] = argument?.planId;
param['is_advance_notice_required'] = argument?.isAdvancedNoticeRequired;
for (int index = 0; index < argument!.listFile.length; index++) {
if (argument.listFile[index].typeFile == TypeFile.IMAGE) {
///type 1: Image, 2: Video
param['image_or_video[$index][type]'] = 1;
param['image_or_video[$index][image]'] = await MultipartFile.fromFile(
argument.listFile[index].pathFile,
filename: 'File$index',
contentType: MediaType("image", argument.listFile[index].pathFile.split(".").last),
);
} else {
param['image_or_video[$index][type]'] = 2;
param['image_or_video[$index][video]'] = await MultipartFile.fromFile(
argument.listFile[index].pathFile,
filename: 'File$index',
contentType: MediaType("video", argument.listFile[index].pathFile.split(".").last),
);
}
}
param['subcategory_id'] = 1;
param['title'] = argument.title;
param['body'] = argument.content;
param['prefecture_cd'] = argument.prefecture?.prefectureId;
param['city'] = argument.district;
if (checkNullText(argument.address))
param['street_number'] = argument.address;
if (checkNullText(argument.buildingName))
param['building_name'] = argument.buildingName;
if (checkNullText(argument.numberOfPeople))
param['num_of_people'] = int.parse(argument.numberOfPeople!);
if (checkNullText(argument.gender))
param['sex'] = getParamGender(argument.gender);
if (checkNullText(argument.ageLower!))
param['age_lower'] = int.parse(argument.ageLower!);
if (checkNullText(argument.ageUpper))
param['age_upper'] = int.parse(argument.ageUpper!);
param['start_time'] = argument.startTime;
var _dio = Dio();
String? token = await LocalStorage().getToken();
_dio.interceptors.add(InterceptorsWrapper(onRequest: (request, handler) {
request.headers["Authorization"] = "Bearer $token";
return handler.next(request);
}));
var response = await _dio
.post(
NetworkConfigure.BASE_URL + NetworkConfigure.API_NAME + "posts",
data: FormData.fromMap(param),
)
.catchError((onError) {
print("Error: $onError");
});
print("Result: ${response.data}");
}
【问题讨论】:
标签: flutter flutter-layout flutter-dependencies