본문 바로가기
안드로이드/Retrofit

안드로이드 Retrofit MultipartFormdata

by 김어찐 2022. 8. 10.
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