前段時間,OKhttp3已升級到Okhttp4 ,編寫語言由java過渡到kotlin,而以前okhttp3經常用到的post提交數據的:
已過時,並且換成了kotlin的新特性寫法!RequestBody.create()
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()
的時候,編譯器一直不提示引入包,所以折騰了很長時間。
如果編譯器不提示引入包,記得自己手動加上就可以了