添加HttpLoggingInterceptor

This commit is contained in:
wujifei
2021-01-20 17:01:54 +08:00
parent 7cfc1f7825
commit dbc070a222
4 changed files with 4 additions and 115 deletions

View File

@@ -37,5 +37,7 @@ dependencies {
api rootProject.ext.dependencies.retrofitadapter
api rootProject.ext.dependencies.retrofitconvertergson
api rootProject.ext.dependencies.retrofitconverterscalars
implementation project(path: ':foudations:mogo-httpdns')
implementation rootProject.ext.dependencies.okhttpinterceptor
}

View File

@@ -4,11 +4,10 @@ import com.mogo.cloud.commons.network.NetConstants.Companion.CONNECT_TIMEOUT
import com.mogo.cloud.commons.network.NetConstants.Companion.READ_TIMEOUT
import com.mogo.cloud.commons.network.NetConstants.Companion.WRITE_TIMEOUT
import com.mogo.cloud.commons.network.interceptor.HeaderNetworkInterceptor
import com.mogo.cloud.commons.network.interceptor.RequestLogInterceptor
import com.mogo.cloud.commons.network.interceptor.ResponseLogInterceptor
import com.mogo.cloud.commons.utils.lookup
import okhttp3.Dns
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import java.net.InetAddress
import java.util.concurrent.TimeUnit
@@ -23,8 +22,7 @@ class OkHttpFactory private constructor() {
companion object {
val okHttpClient: OkHttpClient by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
OkHttpClient.Builder()
.addInterceptor(RequestLogInterceptor())
.addInterceptor(ResponseLogInterceptor())
.addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.addNetworkInterceptor(HeaderNetworkInterceptor())
.connectTimeout(CONNECT_TIMEOUT, TimeUnit.MILLISECONDS)
.readTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS)

View File

@@ -1,58 +0,0 @@
package com.mogo.cloud.commons.network.interceptor
import android.util.Log
import okhttp3.Interceptor
import okhttp3.Protocol
import okhttp3.Response
import okio.Buffer
import java.io.IOException
import java.nio.charset.Charset
/**
* created by wujifei on 2021/1/20 10:48
* describe:
*/
class RequestLogInterceptor : Interceptor {
private val TAG = "RequestLogInterceptor"
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val requestBody = request.body()
val hasRequestBody = requestBody != null
var protocol = Protocol.HTTP_1_1.toString()
if (chain.connection() != null && chain.connection()!!.protocol() != null) {
protocol = chain.connection()!!.protocol().toString()
}
val logMsg = StringBuilder()
logMsg.append("--> ")
logMsg.append(protocol).append(", ")
logMsg.append(request.method()).append(", ")
logMsg.append("Request Headers: ").append(request.headers()).append("\r\n")
logMsg.append(request.url()).append("\r\n")
if (hasRequestBody) {
logMsg.append("Content-Type: ").append(requestBody!!.contentType()).append(", ")
logMsg.append("\r\nContent-Length: ").append(requestBody!!.contentLength())
try {
var body: String? = null
val UTF8 = Charset.forName("UTF-8")
val buffer = Buffer()
requestBody!!.writeTo(buffer)
var charset = UTF8
val contentType = requestBody!!.contentType()
if (contentType != null) {
charset = contentType.charset(UTF8)
}
if (charset != null) {
body = buffer.readString(charset)
}
logMsg.append("\r\nContent-body: ").append(body)
} catch (e: IOException) {
e.printStackTrace()
}
}
logMsg.append("\r\n<-- end http request")
Log.d(TAG, logMsg.toString())
return chain.proceed(request)
}
}

View File

@@ -1,53 +0,0 @@
package com.mogo.cloud.commons.network.interceptor
import android.util.Log
import okhttp3.Interceptor
import okhttp3.MediaType
import okhttp3.Response
import okhttp3.ResponseBody
import java.util.concurrent.TimeUnit
/**
* created by wujifei on 2021/1/20 10:50
* describe:
*/
class ResponseLogInterceptor : Interceptor {
private val TAG = "ResponseLogInterceptor"
override fun intercept(chain: Interceptor.Chain): Response {
val startTime = System.nanoTime()
val response = chain.proceed(chain.request())
val endTime = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime)
val responseBody = response.body()
var responseContent: String? = null
var bodySize: String? = null
var contentType: MediaType? = null
var consumedResponse = false
val logMsg = StringBuilder()
if (responseBody != null) {
val contentLength = responseBody.contentLength()
bodySize = if (contentLength != -1L) "$contentLength-byte" else "unknown-length"
contentType = responseBody.contentType()
responseContent = responseBody.string()
consumedResponse = true
}
logMsg.append("--> ")
logMsg.append(response.code()).append(" ")
logMsg.append(response.message()).append(" ")
logMsg.append(response.protocol()).append(" ")
logMsg.append(response.request().url()).append("\r\n")
logMsg.append("Response Content: ").append(responseContent).append("\r\n")
logMsg.append("Content-Type: ").append(contentType).append(", ")
logMsg.append("Content-Length: ").append(bodySize).append(", ")
logMsg.append(" (").append(endTime).append("ms)")
logMsg.append(" <-- end http response")
Log.d(TAG, logMsg.toString())
return if (consumedResponse) response.newBuilder().body(ResponseBody.create(contentType, responseContent)).build() else response
}
}