이렇게 멀티 파트 폼 으로 되어있을때
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 |