如何"dump"请求正文?
How to "dump" request body?
有什么方法可以获取原始表示形式的请求吗?我需要这样的东西:
POST /user HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 0
Content-Type: application/json
Host: localhost:8080
User-Agent: okhttp/4.9.0
试试内置的 logging interceptor 或自己编写。
如果您使用 Android,请尝试 Chucker。
我在拦截器中得到了以下奇怪的解决方案:
val buffer = okio.Buffer()
request.body?.writeTo(buffer)
val rawRequest = buildString {
append("${request.method} ${chain.request().url.encodedPath} ${chain.connection()?.protocol().toString().toUpperCase()}\n")
append(chain.request().headers.map { "${it.first}: ${it.second}\n" }.reduce { acc, s -> "$acc$s" })
append(buffer.readString(Charsets.UTF_8))
}
Log.e("RAW request", "$rawRequest")
一件重要的事情:你必须使用 networkInterceptor
有什么方法可以获取原始表示形式的请求吗?我需要这样的东西:
POST /user HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 0
Content-Type: application/json
Host: localhost:8080
User-Agent: okhttp/4.9.0
试试内置的 logging interceptor 或自己编写。
如果您使用 Android,请尝试 Chucker。
我在拦截器中得到了以下奇怪的解决方案:
val buffer = okio.Buffer()
request.body?.writeTo(buffer)
val rawRequest = buildString {
append("${request.method} ${chain.request().url.encodedPath} ${chain.connection()?.protocol().toString().toUpperCase()}\n")
append(chain.request().headers.map { "${it.first}: ${it.second}\n" }.reduce { acc, s -> "$acc$s" })
append(buffer.readString(Charsets.UTF_8))
}
Log.e("RAW request", "$rawRequest")
一件重要的事情:你必须使用 networkInterceptor