반응형
Mutipart 사용 방법
- MultipartBody.part : 데이터를 여러개로 쪼개어 전송하는 것
- createFormData : 주로 파일 전송을 위해 사용
- POST에서만 사용 가능
- RequestBody : GET을 제외한 메소드는 바디를 사용하기 때문에 요청을 위한 Body 설정
- 파라미터(보낼 데이터, 데이터의 파일 타입) : 데이터가 텍스트인지, 이미지인지, xml 파일인지 등등을 구분
- 예시) RequestBody fileBody = RequestBody.create(photoFile, MediaType.parse("image/jpeg"))
- photoFile은 이미지 파일, MediaType.parse는 이미지 파일의 확장자를 의미
- 텍스트로만 구성된 경우 text/plain 을 사용
- 예시) RequestBody contentBody = RequestBody.create(content, MediaType.parse("text/plain"))
- 파라미터(보낼 데이터, 데이터의 파일 타입) : 데이터가 텍스트인지, 이미지인지, xml 파일인지 등등을 구분
Multipart로 API 요청하기
POSTMAN 프로그램을 통한 API 서버와의 POST 통신
POST
- 파라미터에 바디(Body)를 사용
- 주의! 요청과 응답도 모두 바디로 사용하므로 혼동하면 안된다!!!
(내가 그랬음)
- 주의! 요청과 응답도 모두 바디로 사용하므로 혼동하면 안된다!!!
- 사용자가 서버에 데이터를 추가하거나 정보를 입력 할 때 사용 (회원가입, 글쓰기 등)
- 예시 API서버에서의 GET 메소드 필수 파라미터
- Header : 인증키(Authorization)
- Body : photo(이미지 파일), content(내용)
POST 요청, 이미지를 업로드
- SnsApi.java
// 포스팅 추가 API
// POST는 Body 사용
@Multipart
@POST("/posting")
Call<PostRes> addPosting(@Header("Authorization") String token,
@Part MultipartBody.Part photo,
@Part("content")RequestBody content);
- AddSnsActivity.java (실행되는 액티비티 이름)
// 네트워크로 데이터 전송, Retrofit 객체 생성
Retrofit retrofit = NetworkClient.getRetrofitClient(AddSnsActivity.this);
SnsApi api = retrofit.create(SnsApi.class);
// 멀티파트로 파일을 보내는 경우 파라미터 생성 방법, (파일명, 파일 타입)
RequestBody fileBody = RequestBody.create(photoFile, MediaType.parse("image/*"));
MultipartBody.Part photo = MultipartBody.Part.createFormData("photo", photoFile.getName(), fileBody);
// 멀티파트를 텍스트로 보내는 경우 파라미터 보내는 방법 ( 내용, 텍스트 타입)
RequestBody contentBody = RequestBody.create(content, MediaType.parse("text/plain"));
반응형