Yur*_*kiy 4 android retrofit okhttp retrofit2
我将Retrofit库版本 2 与OkHttpClient.
我想从所有响应中获取一些标题。
我找到了一种解决方案OkClient:
public class InterceptingOkClient extends OkClient{
public InterceptingOkClient()
{
}
public InterceptingOkClient(OkHttpClient client)
{
super(client);
}
@Override
public Response execute(Request request) throws IOException
{
Response response = super.execute(request);
for (Header header : response.getHeaders())
{
// do something with header
}
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我正在使用,我该怎么做OkHttpClient?
是的,这是一个老问题……但仍然可以找到答案,因为我自己也在寻找类似的问题。
okHttpClient.interceptors().add(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request original = chain.request();
// Request customization: add request headers
Request.Builder requestBuilder = original.newBuilder()
.header("Authorization", "auth-value"); // <-- this is the important line, to add new header - replaces value with same header name.
Request request = requestBuilder.build();
Response response = chain.proceed(request);
Headers allHeaders = response.headers();
String headerValue = allHeaders.get("headerName");
return response;
}
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
PS:没有错误处理。
pad*_*t27 -2
您可以为此使用日志记录拦截器。在构建客户端时将其作为拦截器添加到 OkHttpClient 构建器中,设置日志级别,瞧!您将获得有关请求和响应的所有信息。
以下是添加拦截器的方法 -
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpBuilder.addInterceptor(loggingInterceptor);
client = okHttpBuilder.build();
Run Code Online (Sandbox Code Playgroud)
当涉及到您想要记录的内容时,有四个选项 - NONE、BASIC、HEADERS和BODY。
现在使用上面定义的客户端构建改造实例,您将拥有所需的所有数据。
| 归档时间: |
|
| 查看次数: |
6320 次 |
| 最近记录: |