본문 바로가기
Java/AndroidStudio

Android - 레트로핏 멀티파트 폼 데이터 보내는 법

by 하니__ 2024. 6. 17.

 

 

이렇게 멀티 파트 폼 으로 되어있을때

 

 

API 부분에서는

 

@Multipart
@POST("/post")
Call<Res> addPost(@Header("Authorization") String token,
                  @Part MultipartBody.Part photo,
                  @Part ("content")RequestBody content);

@mulitpart를 HTTP 메소드 전에 붙여주고

각각의 폼 데이터중

 

이미지 "파일"은

@Part MultipartBody.Part 변수명 으로

 

텍스트는

@Part ("변수명")RequestBody 변수명 으로 입력하자

 

그리고 레트로핏을 불러 네트워크를 호출할때에는

 

Retrofit retrofit = NetworkClient.getRetrofitClient(AddActivity.this);
PostingApi api = retrofit.create(PostingApi.class);

SharedPreferences sp = getSharedPreferences(Config.SP_NAME,MODE_PRIVATE);
String token = sp.getString("token", "");

// 보낼 파일 만들기
RequestBody fileBody = RequestBody.create(photoFile, MediaType.parse("Image/jpeg"));
MultipartBody.Part photo = MultipartBody.Part.createFormData("photo", photoFile.getName(), fileBody);

// 보낼 텍스트 만들기
RequestBody textBody = RequestBody.create(content, MediaType.parse("text/plain"));


Call<Res> call = api.addPost("Bearer "+token, photo, textBody );
call.enqueue(new Callback<Res>() {
    @Override
    public void onResponse(Call<Res> call, Response<Res> response) {
        dismissProgress();
        if (response.isSuccessful()){
            Toast.makeText(AddActivity.this,
                    "성공적으로 저장 되었습니다",
                    Toast.LENGTH_SHORT).show();
            finish();
        }else{
            return;
        }
    }

    @Override
    public void onFailure(Call<Res> call, Throwable throwable) {
        dismissProgress();
        return;
    }
});

 

보낼 파일과 텍스트를 만든뒤에 넣어줘야한다

'Java > AndroidStudio' 카테고리의 다른 글

Android - GPS 사용  (0) 2024.06.18
Android - 탭바  (1) 2024.06.18
Android - 카메라, 앨범 앱 사용, 권한  (0) 2024.06.14
Android - 로딩 함수  (0) 2024.06.14
Android - Retrofit2 라이브러리 이용 POST API 호출  (0) 2024.06.13