프로젝트에 Retrofit 2.0을 이용하여 개발하던 중, Multipart로 사진 파일을 서버로 전송해야 하는 상황이 있었다.
이 때, 여러 삽질을 통해 Multipart에 대해서 길진 않지만 정리하고자 한다.
아래와 같이 EndPoint를 @Multipart 어노테이션을 이용하여 정의한다.
(여기까지는 Retrofit Docs를 읽으면 알 수 있다....)
1 2 3 4 | @Multipart @POST("업로드 서버 주소") Observable<CommonApiResponse> uploadPhoto( @Part MultipartBody.Part file ); | cs |
하지만 @Part에 해당하는 정보가 무엇이 들어가야 하는지에 대한 설명은 어디에도 나와있지 않았다... (고로 나도 설명하지 않으려...농담이다...)
MultipartBody.Part 클래스를 이용하여 FormData를 만들 수 있다. (아래처럼)
여기서 파일과 같은 정본느 RequestBody를 이용하여 Body를 구성할 수 있다. (한국어인지.... 번역체인지...)
1 2 3 | MultipartBody.Part.createFormData("file", file.getPath(), RequestBody.create(MediaType.parse("image/jpeg"), file)); MultipartBody.Part.createFormData("file", Urls.encode(fileName)); | cs |
위의 조합을 잘 이용하면, Multipart Post 전송을 할 수 있다.
추가로 Mulipart 인코딩관련 어노테이션 처리를 할 필요가 없다. MultiPartBody나 RequestBody에서 알아서 인코딩을 해준다.
Retrofit의 레퍼런스가 정리가 잘되어 있으면 좋겠지만, 정리가 되지 않아 일일히 Retrofit의 JavaDocs를 찾아가며 삽질한 결과 알아낼 수 있었다....ㅠㅠ
'IT > Android' 카테고리의 다른 글
[Android] Soft Key 기종의 소프트 키보드 관련 문제 해결 방법 (0) | 2016.07.02 |
---|---|
[Android] 안드로이드 개발에 유용한 라이브러리 정리 (0) | 2016.07.02 |
[Android] RxJava를 이용한 EventBus (0) | 2016.07.02 |
[Android] Glide의 SimpleTarget 관련 처리 (0) | 2016.07.01 |
[Android] Google Analytics 쉽게 적용하기 (0) | 2016.07.01 |