配置cookie信息:
1 保存cookie信息(一般在登录app之后保存cookie信息):
/**
* Created by zhang on 2017/4/14 09 : 57.
*/
public class ReceivedCookiesInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
//这里获取请求返回的cookie
if (!originalResponse.headers("Set-Cookie").isEmpty()) {
final StringBuffer cookieBuffer = new StringBuffer();
Disposable subscribe = Observable.fromIterable
(originalResponse.headers("Set-Cookie"))
.map(new Function<String, String>() {
@Override
public String apply(@NonNull String list)
throws Exception {
String[] split = list.split(";");
return split[0];
}
}).subscribe(new Consumer<String>() {
@Override
public void accept(@NonNull String cookie)
throws Exception {
if (!TextUtils.isEmpty(cookie)) {
cookieBuffer.append(cookie).append(";");
}
}
});
//path和domain是固定信息,一般不变,可根据你的项目而定,以下仅供参考
cookieBuffer.append("path=/;");
cookieBuffer.append("domain=.api.app.com");
SharedPrefUtil.saveSharedPrfString("cookie", cookieBuffer.toString());
subscribe.dispose();
}
return originalResponse;
}
}
2 添加cookie信息(携带cookie信息请求服务器数据):
/**
* Created by zhang on 2017/4/14 09 : 58.
*/
public class AddCookiesInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
final Request.Builder builder = chain.request().newBuilder();
Observable.just(SharedPrefUtil.getSharedPrfString("cookie", ""))
.subscribe(new Consumer<String>() {
@Override
public void accept(@NonNull String cookie) throws Exception {
//添加cookie
builder.addHeader("Cookie", cookie);
}
});
return chain.proceed(builder.build());
}
}