Retroffit2 POST form-data에 파일의 여러 값 포함

개시하다
이 글은 N·S 고등학교 Advent Calendar 2021째 날이다.
안녕하세요.고등학교 매전캠퍼스 변두리에서 애매모호한 사람이야.비었으니까 써.
메시지
나는 포스트맨으로 이것을 말하고 싶다.

ApiService.kt
interface ApiService {
    @JvmSuppressWildcards
    @POST("upload.php")
    suspend fun upload(@Body body: RequestBody): Response<ResponseBody> // Response<ResponseBody> はよしなに。

    companion object {
        var apiService: ApiService? = null

        fun getInstance(): ApiService {
            if (apiService == null) {
                apiService = Retrofit.Builder()
                    .baseUrl("URL") // TODO: ここにURLを入れる
                    .addConverterFactory(GsonConverterFactory.create())
                    .build().create(ApiService::class.java)
            }
            return apiService!!
        }
    }
}
Activity.kt
val api = ApiService.getInstance()

val file = File(/* TODO: いい感じに */)
val body = file.asRequestBody("application/pdf".toMediaTypeOrNull()) // MIMEはいい感じに変えてください。

val requestBody = MultipartBody.Builder()
    .setType(MultipartBody.FORM)
    .addFormDataPart("file", file.name, body)
    .addFormDataPart("a", "Vintage Culture")
    .addFormDataPart("b", "James Hype")
    .addFormDataPart("c", "Claptone")
    .build()

api.upload(requestBody)
최후
N고 S 성적 확인 앱을 만들었기 때문에 설치할 수 있다면 기쁘겠다.
iOS 버전
안드로이드 버전
선전 구호!

좋은 웹페이지 즐겨찾기