使用retrofit请求添加拦截器打印日志
public class MyLoggingInterceptor implements Interceptor {
private static final String TAG = "MyLoggingInterceptor";
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Response response = chain.proceed(original);
Log.i(TAG,String.format("...\n请求链接:%s\n请求头:%s\n请求参数:%s\n请求响应%s", original.url(),getRequestHeaders(original),getRequestInfo(original), getResponseInfo(response)));
return response;
}
/**
* 打印请求头
*
* @param request 请求的对象
*/
private String getRequestHeaders(Request request) {
String str = "";
if (request == null) {
return str;
}
Headers headers = request.headers();
if (headers == null) {
return str;
}
return headers.toString();
}
/**
* 打印请求消息
*
* @param request 请求的对象
*/
private String getRequestInfo(Request request) {
String str = "";
if (request == null) {
return str;
}
RequestBody requestBody = request.body();
if (requestBody == null) {
return str;
}
try {
Buffer bufferedSink = new Buffer();
requestBody.writeTo(bufferedSink);
Charset charset = Charset.forName("utf-8");
str = bufferedSink.readString(charset);
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
/**
* 打印返回消息
*
* @param response 返回的对象
*/
private String getResponseInfo(Response response) {
String str = "";
if (response == null || !response.isSuccessful()) {
return str;
}
ResponseBody responseBody = response.body();
long contentLength = responseBody.contentLength();
BufferedSource source = responseBody.source();
try {
source.request(Long.MAX_VALUE); // Buffer the entire body.
} catch (IOException e) {
e.printStackTrace();
}
Buffer buffer = source.buffer();
Charset charset = Charset.forName("utf-8");
if (contentLength != 0) {
str = buffer.clone().readString(charset);
}
return str;
}
}
//-----------------通过拦截器添加token---------------------------//
public class RequestInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
String token = BaseApplication.app.getDataCenter().getToken();
Request request = original.newBuilder()
.header("Token", token == null ? "" : token)
.header("Client", "ANDROID")
.method(original.method(), original.body())
.build();
return chain.proceed(request);
}
}