Android OkHttp4 RequestBody.create()過時解決辦法 kotlin、java版本

前段時間,OKhttp3已升級到Okhttp4 ,編寫語言由java過渡到kotlin,而以前okhttp3經常用到的post提交數據的:
RequestBody.create() 已過時,並且換成了kotlin的新特性寫法!

okhttp3 post請求的代碼(4.0版本已過時)

val request:Request=Request
				.Builder()
				.post(RequestBody.create(MediaType.parse("application/json;charset=utf-8"),"body參數"))
				.build()

okhttp4 post最新請求的代碼:

kotlin版本:

import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.RequestBody.Companion.asRequestBody

//String轉RequestBody String、ByteArray、ByteString都可以用toRequestBody()
val stringBody ="body參數".toRequestBody("application/json;charset=utf-8".toMediaType())
 val request:Request=Request
                .Builder()
                .post(stringBody)
                .build()
                
//File轉RequestBody
val file=File("")
val fileBody=file.asRequestBody("text/x-markdown; charset=utf-8".toMediaType())
val request = MultipartBody.Builder()
                    .addFormDataPart("file", file.name,fileBody)
                    .build()


java版本:

import okhttp3.MediaType.Companion.*;
import okhttp3.RequestBody.Companion.*;

//String轉RequestBody String、ByteArray、ByteString都可以用toRequestBody()
 MediaType mediaType=MediaType.Companion.parse("application/json;charset=utf-8");
 RequestBody stringBody=RequestBody.Companion.create("body參數",mediaType);
 Request request=new Request
                .Builder()
                .post(stringBody)
                .build();
                
//File轉RequestBody
MediaType mediaType=MediaType.Companion.parse("text/x-markdown; charset=utf-8");
File file=new File("");
RequestBody fileBody=RequestBody.Companion.create(file,mediaType);
Request request=new MultipartBody.Builder()
                .addFormDataPart("file", file.getName(),fileBody)
                .build();

這就是okhttp4.0最新post帶參數請求的代碼,雖然官方專門出了升級指南但是可能由於編譯器不是最新的版本,在使用toRequestBody()的時候,編譯器一直不提示引入包,所以折騰了很長時間。
如果編譯器不提示引入包,記得自己手動加上就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章