티스토리 뷰

반응형

3. 앞서서 얻은 FILE 을  Retrofit2 를 사용하여 서버에 POST 해보자

public class ApiClient {
    public static Retrofit getClient() {
        retrofit = new Retrofit.Builder()
                .baseUrl("URL")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        return retrofit;
    }
}

public interface ApiService {
    @Multipart
    @POST("endPoint")
    Call<ImageResponse> postImage(@Part("id") RequestBody id,
                                  @Part MultipartBody.Part image);
}

public class ImageResponse {

    private String error;
    private String message;
    
    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }
    
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

 

@Part 어노테이션을 이용해 body 에 담기는 인자를 전달해주자.

private void postImage() {
    RequestBody id = RequestBody.create(MediapartBody.FORM, "id");
    RequestBody imageBody = RequestBody.create(MediaType.parse("image/*"), file); // file 을 여기에 넣는다
    MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(), requestBody);
    
    ApiService apiService = ApiClient.getClient().create(ApiService.class);
    apiService.postImage(id, imageBody).enqueue(new Callback<ImageResponse>() {
        @Override
        public void onResponse(Call<ImageResponse> call, Response<ImageResponse> response) {
            if(response.body() != null) {
                Log.d(TAG, "onResponse: " + response.body.getMessage());
            }
        }
        @Override
        public void onFailure(Call<ImageResponse> call, Throwable t) {
            Log.d(TAG, "onFailure: " + t.toString());
        }
   });
}

 

참고 - Stack Overflow

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함
반응형