Java/AndroidStudio
Android - 레트로핏 멀티파트 폼 데이터 보내는 법
하니__
2024. 6. 17. 13: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;
}
});
보낼 파일과 텍스트를 만든뒤에 넣어줘야한다