Multipart send from retrofit2
1. ApiService
interface ApiService { @Multipart @POST("your_upload_url") fun uploadMultipleFiles( @Part file1: MultipartBody.Part?, @Part file2: MultipartBody.Part?, @Part file3: MultipartBody.Part?, @Part file4: MultipartBody.Part?) : Call<FileUploadResult> } |
2. ApiFactory (result xml parsing)
fun createXmlForImageUpload(): SLApiService { val interceptor = HttpLoggingInterceptor() interceptor.setLevel(HttpLoggingInterceptor.Level.BODY) val client:OkHttpClient = OkHttpClient.Builder() .connectTimeout(180,TimeUnit.SECONDS) //timeout setting .readTimeout(180,TimeUnit.SECONDS) //timeout setting .writeTimeout(180,TimeUnit.SECONDS) //timeout setting .addInterceptor(interceptor).build() // log interceptor val retrofit = Retrofit.Builder() .baseUrl("your api base url") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(SimpleXmlConverterFactory.create()) // xml parsing factory .client(client) .build() return retrofit.create(ApiService::class.java) } |
3. used Api
private fun uploadImage() { val apiService = SLApiFactory.createXmlForImageUpload() var image1:MultipartBody.Part? = null var image2:MultipartBody.Part? = null var image3:MultipartBody.Part? = null var image4:MultipartBody.Part? = null if (SelectImageData.mGridItemList.size > 0) { image1 = prepareFilePart("image1",EditorUtil.makeMiniPath(SelectImageData.mGridItemList.get(0),this@SendImageActivity)) } if (SelectImageData.mGridItemList.size > 1) { image2 = prepareFilePart("image2",EditorUtil.makeMiniPath(SelectImageData.mGridItemList.get(1),this@SendImageActivity)) } if (SelectImageData.mGridItemList.size > 2) { image3 = prepareFilePart("image3",EditorUtil.makeMiniPath(SelectImageData.mGridItemList.get(2),this@SendImageActivity)) } if (SelectImageData.mGridItemList.size > 3) { image4 = prepareFilePart("image4",EditorUtil.makeMiniPath(SelectImageData.mGridItemList.get(3),this@SendImageActivity)) } apiService.uploadMultipleFiles(image1,image2,image3,image4).enqueue(object:Callback<FileUploadResult>{ override fun onFailure(call: Call<FileUploadResult>?, t: Throwable?) {
} override fun onResponse(call: Call<FileUploadResult>?, response: Response<FileUploadResult>?) {
} }) } |
'Development > Android' 카테고리의 다른 글
안드로이드 카메라 통해 이미지 가져오기 & 갤러리에서 이미지 가져오기 (0) | 2018.06.14 |
---|---|
Google Translate (0) | 2018.05.30 |
Android Glide Proguard rules (0) | 2018.05.16 |
If Broadcast Receiver is taking too long to receive in onReceive() (0) | 2018.05.04 |
Multidex setting (0) | 2018.04.06 |