publish 2.0.0.rc15
This commit is contained in:
@@ -1,40 +1,88 @@
|
||||
//package com.tiesheng.web.service;
|
||||
//
|
||||
//import cn.hutool.json.JSONUtil;
|
||||
//import cn.hutool.log.LogFactory;
|
||||
//import com.tiesheng.util.service.http.OkHttpUtil;
|
||||
//import okhttp3.Interceptor;
|
||||
//import okhttp3.Request;
|
||||
//import okhttp3.Response;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import javax.validation.constraints.NotNull;
|
||||
//
|
||||
//@Component
|
||||
//public class LogApiOkHttpInterceptor implements Interceptor {
|
||||
//
|
||||
// @NotNull
|
||||
// @Override
|
||||
// public Response intercept(@NotNull Chain chain) {
|
||||
//
|
||||
// Request request = chain.request();
|
||||
//
|
||||
// Response response;
|
||||
// try {
|
||||
// response = chain.proceed(request);
|
||||
// } catch (Exception e) {
|
||||
// response = new Response.Builder()
|
||||
// .request(request)
|
||||
// .body(OkHttpUtil.ofJsonResponse(JSONUtil.createObj()
|
||||
// .putOpt("code", -1)
|
||||
// .putOpt("message", e.getMessage())
|
||||
// .putOpt("exception", e)
|
||||
// .toString()))
|
||||
// .code(200).build();
|
||||
// }
|
||||
//
|
||||
// LogFactory.get().info("url: {},body: {}", request.url(), response.body().contentType().toString());
|
||||
//
|
||||
// return response;
|
||||
// }
|
||||
//}
|
||||
package com.tiesheng.web.service;
|
||||
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.tiesheng.util.service.http.OkHttpUtil;
|
||||
import com.tiesheng.web.mapper.CoreLogApiMapper;
|
||||
import com.tiesheng.web.pojos.dao.CoreLogApi;
|
||||
import okhttp3.*;
|
||||
import okio.Buffer;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Component
|
||||
public class LogApiOkHttpInterceptor implements Interceptor {
|
||||
|
||||
@Resource
|
||||
CoreLogApiMapper coreLogApiMapper;
|
||||
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Response intercept(@NotNull Chain chain) {
|
||||
|
||||
CoreLogApi logApi = new CoreLogApi();
|
||||
|
||||
Request request = chain.request();
|
||||
logApi.setUrl(request.url().toString());
|
||||
logApi.setContent(requestBody2String(request));
|
||||
|
||||
Response response;
|
||||
try {
|
||||
response = chain.proceed(request);
|
||||
ResponseBody peekBody = response.peekBody(Long.MAX_VALUE);
|
||||
logApi.setRespBody(peekBody.string());
|
||||
logApi.setResult(response.code());
|
||||
peekBody.close();
|
||||
} catch (Exception e) {
|
||||
logApi.setRespBody(JSONUtil.createObj()
|
||||
.putOpt("code", -1)
|
||||
.putOpt("message", e.getMessage())
|
||||
.putOpt("exception", e)
|
||||
.toString());
|
||||
response = new Response.Builder()
|
||||
.request(request)
|
||||
.body(OkHttpUtil.ofJsonResponse(logApi.getRespBody()))
|
||||
.build();
|
||||
}
|
||||
|
||||
ThreadUtil.execute(() -> coreLogApiMapper.insert(logApi));
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
private String requestBody2String(@NotNull Request request) {
|
||||
final Request copy = request.newBuilder().build();
|
||||
RequestBody requestBody = copy.body();
|
||||
if (requestBody == null) {
|
||||
return null;
|
||||
}
|
||||
if (requestBody instanceof MultipartBody) {
|
||||
return null;
|
||||
}
|
||||
if (requestBody instanceof FormBody) {
|
||||
JSONObject jsonObject = JSONUtil.createObj();
|
||||
FormBody formBody = (FormBody) requestBody;
|
||||
for (int i = 0; i < formBody.size(); i++) {
|
||||
jsonObject.putOpt(formBody.encodedName(i), formBody.encodedValue(i));
|
||||
}
|
||||
return jsonObject.toString();
|
||||
}
|
||||
|
||||
final Buffer buffer = new Buffer();
|
||||
try {
|
||||
if (copy.body() != null) {
|
||||
copy.body().writeTo(buffer);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return "occurs error when show requestBody";
|
||||
}
|
||||
return buffer.readUtf8();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user