728x90
fun updateMember(memberId : Long, memberUpdateDto: MemberUpdateDto,image: File?) : LiveData<String>{
var result : MutableLiveData<String> = MutableLiveData()
// val aboutMeRequest = aboutMeApi.updateMember(memberId,memberUpdateDto)
val filePart : MultipartBody.Part?
val imageBody = RequestBody.create(MediaType.parse("image/jpeg"), image);
filePart = MultipartBody.Part.createFormData("memberImage",image?.name,imageBody)
val nameBody = RequestBody.create(MediaType.parse("text/plain"),memberUpdateDto.name)
val jobBody = RequestBody.create(MediaType.parse("text/plain"),memberUpdateDto.job)
val phoneBody = RequestBody.create(MediaType.parse("text/plain"),memberUpdateDto.phone)
val contentBody = RequestBody.create(MediaType.parse("text/plain"),memberUpdateDto.content)
val requestMap = HashMap<String,RequestBody>()
requestMap.put("name",nameBody)
requestMap.put("job",jobBody)
requestMap.put("phone",phoneBody)
requestMap.put("content",contentBody)
val tagBody = ArrayList<MultipartBody.Part>()
for (tag in memberUpdateDto.tag) {
tagBody.add(MultipartBody.Part.createFormData("tag",tag))
}
val aboutMeRequest = aboutMeApi.updateMember(
memberId,
filePart,
requestMap,
tagBody
)
aboutMeRequest.enqueue(object :Callback<ResponseDto<String>>{
override fun onResponse(
call: Call<ResponseDto<String>>,
response: Response<ResponseDto<String>>
) {
val aboutMeResponse : ResponseDto<String>? = response.body()
result.value = aboutMeResponse!!.response
}
override fun onFailure(
call: Call<ResponseDto<String>>,
t: Throwable
) {
Log.d("http","request error")
}
})
return result
}
@PATCH("/api/member/{memberId}")
@Multipart
fun updateMember(
@Path("memberId") memberId : Long,
@Part memberImage : MultipartBody.Part,
@PartMap params : Map<String,@JvmSuppressWildcards RequestBody>,
@Part tags : List<MultipartBody.Part>
) : Call<ResponseDto<String>>
참고
https://velog.io/@dev_thk28/Android-Retrofit2-Multipart%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Java
[Android] Retrofit2 Multipart사용하기 (Java)
Multipart 사용하기
velog.io
728x90
'안드로이드 > Retrofit' 카테고리의 다른 글
안드로이드 Retrofit TimeOut (0) | 2022.11.28 |
---|---|
안드로이드 Retrofit Intercepter 적용 (0) | 2022.11.28 |
안드로이드 retrofit builder (0) | 2022.11.27 |