• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

수업과 관련이 없지만 물을 곳이 없어...교수님께 여쭙니다..

24.03.01 00:37 작성 조회수 122

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 인데 미디어 타입이 맞지 않다고 하는 것 보면 서버 쪽에서 멀티파트를 받는 설정에서 뭔가 빠진 것은 없는지 확인해 보시기 바랍니다.

교수님이라고 하시는 걸 보면 언제 저에게 수업을 받았던 학생인가요?

yungjoon2님의 프로필

yungjoon2

질문자

2024.03.01

습관적으로 교수님이라고 했습니다. 직접 수업들은적은 없어요 ㅎㅎ..

post맨에서 post는 잘 됩니다.

image

postman 에서 되고 앱에서 안 되면 대부분 서버쪽 cors 정책 문제였는데요.
전부 접속이 허용되도록 설정되어 있는지 확인해 보세요