Closed6
android で http request
このあたりから
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
okhttp の最新をとってくる
(そろそろ 5 系がでそうな気配)
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
object OkHttp {
private val Json: MediaType = "application/json; charset=utf-8".toMediaType()
private val client = OkHttpClient()
fun buildRequestBody(body: String, mediaType: MediaType = Json): RequestBody {
return body.toRequestBody(mediaType)
}
fun buildRequest(url: String): Request {
return Request.Builder()
.url(url)
.build()
}
fun buildPostRequest(url: String, requestBody: RequestBody): Request {
return Request.Builder()
.url(url)
.post(requestBody)
.build()
}
fun execute(request: Request): String? {
val response = client.newCall(request).execute()
return response.body?.string()
}
}
class HttpClient {
fun get(url: String): String? {
val request = OkHttp.buildRequest(url)
return OkHttp.execute(request)
}
fun post(url: String, body: String): String? {
val requestBody = OkHttp.buildRequestBody(body)
val request = OkHttp.buildPostRequest(url, requestBody)
return OkHttp.execute(request)
}
}
interface Response {
fun isSuccessful(): Boolean
fun getCode(): Int
fun getBody(): String?
}
class HttpClient {
fun get(url: String): Response {
val request = OkHttp.buildRequest(url)
return OkHttp.execute(request)
}
fun post(url: String, body: String): Response {
val requestBody = OkHttp.buildRequestBody(body)
val request = OkHttp.buildPostRequest(url, requestBody)
return OkHttp.execute(request)
}
}
interface を切って okHttp との依存をこのレイヤーまでで切る
import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
object OkHttp {
private val Json: MediaType = "application/json; charset=utf-8".toMediaType()
private val client = OkHttpClient()
fun buildRequestBody(body: String, mediaType: MediaType = Json): RequestBody {
return body.toRequestBody(mediaType)
}
fun buildRequest(url: String): Request {
return Request.Builder()
.url(url)
.build()
}
fun buildPostRequest(url: String, requestBody: RequestBody): Request {
return Request.Builder()
.url(url)
.post(requestBody)
.build()
}
fun execute(request: Request): OkHttpResponse {
return OkHttpResponse(client.newCall(request).execute())
}
}
class OkHttpResponse(private val response: okhttp3.Response): Response {
override fun isSuccessful(): Boolean {
return response.isSuccessful
}
override fun getCode(): Int {
return response.code
}
override fun getBody(): String? {
return response.body?.toString()
}
}
OkHttp -> HttpClient で依存させる
このスクラップは2021/03/14にクローズされました