feat: 更新 OkHttp 至 4.X 最新版本并启用 brotli 压缩 https://jira.shanqu.cc/browse/GHZSCY-6790

This commit is contained in:
曾祥俊
2024-10-16 16:56:06 +08:00
parent 5486ad8818
commit 2a25675dce
30 changed files with 100 additions and 56 deletions

View File

@ -27,7 +27,9 @@ import com.gh.gamecenter.retrofit.RetrofitManager
import com.halo.assistant.HaloApp
import com.lightgame.utils.Utils
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONArray
import org.json.JSONObject
@ -176,7 +178,7 @@ object UsageStatsHelper {
return
}
val body = RequestBody.create(MediaType.parse("application/json"), postBody.toString())
val body = postBody.toString().toRequestBody("application/json".toMediaTypeOrNull())
mApi.postUsageStatus(body, UserManager.getInstance().userId)
.subscribe(object : BiResponse<ResponseBody>() {
override fun onSuccess(data: ResponseBody) {

View File

@ -34,7 +34,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import org.json.JSONException
import org.json.JSONObject
import java.util.*
@ -216,7 +218,7 @@ object PackageObserver {
try {
jsonObject.put("game_id", gameId)
jsonObject.put("package", packageName)
val rBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val rBody = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
RetrofitManager.getInstance().api
.postPlayedGame(UserManager.getInstance().userId, rBody)
.subscribeOn(Schedulers.io())

View File

@ -94,8 +94,8 @@ object ExoCacheManager {
response =
OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).build()
.newCall(request).execute()
if (response!!.isSuccessful && response.body() != null) {
val length = response.body()!!.contentLength()
if (response!!.isSuccessful && response.body != null) {
val length = response.body!!.contentLength()
contentLength = if (length == 0L) -1L else length
}
} catch (e: Exception) {

View File

@ -27,7 +27,7 @@ open class BaseCloudArchiveViewModel(application: Application, private val mConf
)
.enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
mArchiveConfigStr = response.body()?.string() ?: ""
mArchiveConfigStr = response.body?.string() ?: ""
callback?.invoke(mArchiveConfigStr)
}

View File

@ -45,7 +45,9 @@ import com.zhihu.matisse.Matisse
import com.zhihu.matisse.internal.utils.PathUtils
import io.reactivex.disposables.Disposable
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
import kotlin.collections.component1
import kotlin.collections.component2
@ -420,10 +422,8 @@ class GameUploadFragment : ToolbarFragment() {
requestMap["type"] = mGameType
}
val body = RequestBody.create(
MediaType.parse("application/json"),
GsonUtils.toJson(requestMap)
)
val body = GsonUtils.toJson(requestMap)
.toRequestBody("application/json".toMediaTypeOrNull())
mViewModel.uploadGames(body)
}

View File

@ -45,7 +45,9 @@ import com.gh.gamecenter.login.user.UserManager
import com.halo.assistant.HaloApp
import com.lightgame.utils.Utils
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import org.json.JSONObject
import retrofit2.HttpException
@ -541,7 +543,7 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver {
jsonObject.put("rom", MetaUtil.getRom().name + " " + MetaUtil.getRom().versionName)
jsonObject.put("again", again)
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
CheckLoginUtils.checkLogin(this, mEntrance) {
mViewModel.postGameComment(mComment?.id ?: "", body)

View File

@ -6,7 +6,9 @@ import com.gh.gamecenter.retrofit.service.ApiService
import com.gh.gamecenter.subject.ISubjectRepository
import io.reactivex.Observable
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.ResponseBody
import okhttp3.ResponseBody.Companion.toResponseBody
class QGameSubjectRepository(
private val api: ApiService = RetrofitManager.getInstance().newApi
@ -17,7 +19,7 @@ class QGameSubjectRepository(
}
override fun getSubjectName(column_id: String?): Observable<ResponseBody> {
return Observable.just(ResponseBody.create(MediaType.parse("application/json"), "{\"name\": \"专题\"}"))
return Observable.just("{\"name\": \"专题\"}".toResponseBody("application/json".toMediaTypeOrNull()))
}
}

View File

@ -6,7 +6,9 @@ import com.gh.gamecenter.retrofit.service.ApiService
import com.gh.gamecenter.subject.ISubjectRepository
import io.reactivex.Observable
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.ResponseBody
import okhttp3.ResponseBody.Companion.toResponseBody
class WGameSubjectRepository(
private val api: ApiService = RetrofitManager.getInstance().newApi
@ -16,6 +18,6 @@ class WGameSubjectRepository(
}
override fun getSubjectName(column_id: String?): Observable<ResponseBody> {
return Observable.just(ResponseBody.create(MediaType.parse("application/json"), "{\"name\": \"专题\"}"))
return Observable.just("{\"name\": \"专题\"}".toResponseBody("application/json".toMediaTypeOrNull()))
}
}

View File

@ -20,7 +20,9 @@ import com.gh.gamecenter.retrofit.RetrofitManager
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONArray
import org.json.JSONObject
@ -75,7 +77,7 @@ class InstalledGameDialog(
jsonObject.put("package", game.packageName)
objects.put(jsonObject)
}
val requestBody = RequestBody.create(MediaType.parse("application/json"), objects.toString())
val requestBody = objects.toString().toRequestBody("application/json".toMediaTypeOrNull())
RetrofitManager.getInstance().api
.postPlayedGames(UserManager.getInstance().userId, requestBody)
.subscribeOn(Schedulers.io())

View File

@ -25,7 +25,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.greenrobot.eventbus.EventBus
import org.json.JSONObject
@ -259,10 +261,8 @@ class AnswerDetailViewModel(application: Application) : AndroidViewModel(applica
fun toggleComment(answerId: String, isCommentable: Boolean) {
val params = HashMap<String, Boolean>()
params["commentable"] = isCommentable
val body = RequestBody.create(
MediaType.parse("application/json"),
JSONObject(params as Map<*, *>).toString()
)
val body = JSONObject(params as Map<*, *>).toString()
.toRequestBody("application/json".toMediaTypeOrNull())
RetrofitManager.getInstance()
.api

View File

@ -26,7 +26,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.greenrobot.eventbus.EventBus
import org.json.JSONArray
@ -144,7 +146,7 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a
if (draftEntity?.id != null) {
articleBody.put("draft_id", draftEntity?.id)
}
val body = RequestBody.create(MediaType.parse("application/json"), articleBody.toString())
val body = articleBody.toString().toRequestBody("application/json".toMediaTypeOrNull())
val observable = if (detailEntity == null) {
mApi.postCommunityArticle(mSelectCommunityData?.id, body)
} else {
@ -226,7 +228,7 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a
if (mSelectCommunityData != null && mSelectCommunityData!!.id.isNotEmpty()) {
articleBody.put("community_id", mSelectCommunityData!!.id)
}
val body = RequestBody.create(MediaType.parse("application/json"), articleBody.toString())
val body = articleBody.toString().toRequestBody("application/json".toMediaTypeOrNull())
val observable = if (draftEntity?.id != null) {
mApi.patchCommunityArticleDrafts(UserManager.getInstance().userId, draftEntity?.id, body)
} else {

View File

@ -28,7 +28,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.greenrobot.eventbus.EventBus
import org.json.JSONArray
@ -266,7 +268,7 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel(
}
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true))
val body = RequestBody.create(MediaType.parse("application/json"), bodyJson)
val body = bodyJson.toRequestBody("application/json".toMediaTypeOrNull())
mApi.moderatorsPatchQuestion(body, UserManager.getInstance().userId, questionEntity?.id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@ -15,7 +15,9 @@ import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONException
import org.json.JSONObject
@ -59,7 +61,7 @@ class QuestionsInviteViewModel(application: Application, var questionId: String?
e.printStackTrace()
}
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
RetrofitManager.getInstance().api
.postInvite(body, questionId)
.subscribeOn(Schedulers.io())

View File

@ -30,7 +30,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONObject
import retrofit2.HttpException
@ -114,7 +116,7 @@ class VideoPublishViewModel(application: Application) : AndroidViewModel(applica
when {
isDraft -> {
val draftData = JSONObject(videoEntity.toJson()).put("local_path", videoPath).toString()
val body = RequestBody.create(MediaType.parse("application/json"), draftData)
val body = draftData.toRequestBody("application/json".toMediaTypeOrNull())
postDraft(body)
}
videoPatch != null -> {
@ -150,7 +152,7 @@ class VideoPublishViewModel(application: Application) : AndroidViewModel(applica
private fun patchVideo(jsonObject: JSONObject, videoId: String) {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true))
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
mApi.patchBbsVideo(videoId, body)
.compose(observableToMain())
.subscribe(object : Response<ResponseBody>() {
@ -208,7 +210,7 @@ class VideoPublishViewModel(application: Application) : AndroidViewModel(applica
private fun postVideo(jsonObject: JSONObject) {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true))
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
mApi.postBbsVideo(body)
.compose(observableToMain())
.subscribe(object : Response<JsonObject>() {

View File

@ -16,7 +16,9 @@ import com.lightgame.utils.Utils.toast
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import retrofit2.HttpException
class AddKaiFuViewModel(application: Application) : AndroidViewModel(application) {
@ -266,7 +268,7 @@ class AddKaiFuViewModel(application: Application) : AndroidViewModel(application
private fun postData(postList: ArrayList<ServerCalendarEntity>) {
val body = RequestBody.create(MediaType.parse("application/json"), GsonUtils.toJson(postList))
val body = GsonUtils.toJson(postList).toRequestBody("application/json".toMediaTypeOrNull())
RetrofitManager.getInstance().api.addKaifu(body, mGameId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@ -11,7 +11,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONObject
import retrofit2.HttpException
@ -35,7 +37,7 @@ class PatchKaifuViewModel(application: Application) : AndroidViewModel(applicati
val jsonObject = JSONObject()
jsonObject.put("note", patchName)
jsonObject.put("remark", patchRemark)
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
apiService.patchKaifu(body, gameId, serverEntity!!.id)
} else {
apiService.deleteKaifu(gameId, serverEntity!!.id)

View File

@ -26,7 +26,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONObject
import retrofit2.HttpException
@ -57,7 +59,7 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat
private fun postVideo(jsonObject: JSONObject) {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true))
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
mApi.postVideo(body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -121,7 +123,7 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat
private fun patchVideo(jsonObject: JSONObject, videoId: String) {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("提交中...", true))
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
mApi.patchVideo(body, videoId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -188,7 +190,7 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat
patchVideo(JSONObject(GsonUtils.toJson(videoEntity)), videoEntity.id)
} else if (isDraft) {
val draftData = JSONObject(videoEntity.toJson()).put("local_path", videoPath).toString()
val body = RequestBody.create(MediaType.parse("application/json"), draftData)
val body = draftData.toRequestBody("application/json".toMediaTypeOrNull())
postDraft(body)
} else {
var videoHeight = 0

View File

@ -19,7 +19,9 @@ import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import io.reactivex.subjects.PublishSubject
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONException
import org.json.JSONObject
@ -66,7 +68,7 @@ class VoteViewModel(application: Application, private val mGameId: String = "")
requestMap["version_code"] = installGameEntity.versionCode
val body = RequestBody.create(
MediaType.parse("application/json"),
"application/json".toMediaTypeOrNull(),
GsonUtils.toJson(requestMap)
)
RetrofitManager.getInstance().api.postPlatformRequestApk(installGameEntity.platformRequestsId, body)
@ -99,7 +101,7 @@ class VoteViewModel(application: Application, private val mGameId: String = "")
} catch (e: JSONException) {
e.printStackTrace()
}
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
val responseBodyObservable = if (isNewVote) {
RetrofitManager.getInstance().api.addVersionVote(body, mGameId)
} else if (isVoted) {

View File

@ -22,7 +22,9 @@ import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.transformWhile
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONObject
import retrofit2.HttpException
@ -93,7 +95,7 @@ class MainWrapperViewModel(application: Application, private val mRepository: Ma
fun postMessageRead(messageId: String) {
val jsonObject = JSONObject()
jsonObject.put("type", "system_message")
val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
RetrofitManager.getInstance().api.postMessageRead(UserManager.getInstance().userId, messageId, body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@ -15,7 +15,9 @@ import com.halo.assistant.HaloApp
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONObject
import retrofit2.HttpException
@ -52,9 +54,8 @@ class ManuallyRealNameViewModel(application: Application) : AndroidViewModel(app
fun postCertificationReview(idCardEntity: IdCardEntity) {
val userInfoEntity = UserInfoEntity()
userInfoEntity.idCard = idCardEntity
val body = RequestBody.create(
MediaType.parse("application/json"), GsonUtils.toJson(userInfoEntity)
)
val body = GsonUtils.toJson(userInfoEntity)
.toRequestBody("application/json".toMediaTypeOrNull())
RetrofitManager.getInstance().api.postCertificationReview(body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

View File

@ -19,7 +19,9 @@ import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.ResponseBody
import org.json.JSONObject
import retrofit2.HttpException
@ -39,7 +41,7 @@ class VerifyPhoneViewModel(application: Application) : AndroidViewModel(applicat
params["mobile"] = phoneNum
val jsonObject = JSONObject(params as Map<*, *>)
jsonObject.put("device", device)
val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body: RequestBody = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
api.verifyPhone(1, body)
.subscribeOn(Schedulers.io())
@ -80,7 +82,7 @@ class VerifyPhoneViewModel(application: Application) : AndroidViewModel(applicat
params["code"] = code
val jsonObject = JSONObject(params as Map<*, *>)
jsonObject.put("device", device)
val body: RequestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString())
val body: RequestBody = jsonObject.toString().toRequestBody("application/json".toMediaTypeOrNull())
api.verifyPhone(2, body)
.subscribeOn(Schedulers.io())