작성
·
264
0
dto랑 이미지 파일을 dio로 이용하여 post 하려는데 뭘해도 400, 415 등등 에러가 나옵니다 혹시 이유를 알 수 있을까요?... 수업내용이 아닌 질문 죄송합니다.
Future<void> postUser(UserInfo userDto, XFile? imageFile) async {
try {
// Dio 인스턴스 생성
Dio dio = Dio();
// 멀티파트 요청 생성
FormData formData = FormData();
// Add userDto as a JSON part
formData.fields.add(MapEntry('userDto', jsonEncode(userDto.toJson())));
// Add image file
if (imageFile != null) {
formData.files.add(MapEntry(
'image',
await MultipartFile.fromFile(imageFile.path),
));
}
// Dio를 사용하여 POST 요청 보내기
Response response = await dio.post(
'http://43.200.217.158:8080/bookstore-0.0.1-SNAPSHOT/user',
data: formData,
options: Options(
headers: {
"Content-Type": "multipart/form-data",
},
),
);
// 응답 확인
if (response.statusCode == 200) {
print("User Data sent successfully");
} else {
print('response.statusCode: ${response.statusCode}');
throw Exception("Failed to send data");
}
} catch (e) {
print("Failed to send post data: $e");
}
}
-------------------------------------------------------------------------------
서버 코드 스프링
@PostMapping(value = "/user", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE})
public ResponseEntity<ApiResponse> save(@RequestPart UserDto userDto, @RequestPart MultipartFile image) {
try {
log.info("유저 생성 입장!!");
Long save = userService.save(userDto, image);
return ResponseEntity.status(HttpStatus.OK).body(new ApiResponse("Created", "유저 생성 성공", save));
} catch (Exception e) {
log.error("e={}", e);
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ApiResponse("NotFound", "유저 생성 실패", null));
}
}
답변 1
0
Postman 같은 툴로 서버에 똑같이 Post 요청을 해 보셨나요? 잘 되던가요?
어느쪽이 문제인지를 찾아야 할 것 같고, 경험상 서버를 직접 만들면서 발생하는 에러는 대부분 서버쪽 문제가 많았습니다.
415는 Unsupported Media Type 인데 미디어 타입이 맞지 않다고 하는 것 보면 서버 쪽에서 멀티파트를 받는 설정에서 뭔가 빠진 것은 없는지 확인해 보시기 바랍니다.
교수님이라고 하시는 걸 보면 언제 저에게 수업을 받았던 학생인가요?
습관적으로 교수님이라고 했습니다. 직접 수업들은적은 없어요 ㅎㅎ..
post맨에서 post는 잘 됩니다.