首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于OkHttp 3的cookie自动处理

基于OkHttp 3的cookie自动处理
EN

Stack Overflow用户
提问于 2016-01-19 16:19:45
回答 12查看 77K关注 0票数 55

我正在使用okhttp 3.0.1。

我在每一个地方都得到了使用okhttp2处理cookie的例子。

代码语言:javascript
运行
复制
OkHttpClient client = new OkHttpClient();
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
client.setCookieHandler(cookieManager);

可以请一些人指导我如何在第3版中使用。setCookieHandler方法在第3版中不存在。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2016-01-19 21:01:30

现在我在玩它。尝试PersistentCookieStore,为JavaNetCookieJar添加gradle依赖项

compile "com.squareup.okhttp3:okhttp-urlconnection:3.0.0-RC1"

和init

代码语言:javascript
运行
复制
    // init cookie manager
    CookieHandler cookieHandler = new CookieManager(
            new PersistentCookieStore(ctx), CookiePolicy.ACCEPT_ALL);
    // init okhttp 3 logger
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);
    // init OkHttpClient
    OkHttpClient httpClient = new OkHttpClient.Builder()
            .cookieJar(new JavaNetCookieJar(cookieHandler))
            .addInterceptor(logging)
            .build();

`

票数 36
EN

Stack Overflow用户

发布于 2016-02-11 17:46:59

如果您想使用新的OkHttp 3 CookieJar并消除okhttp-urlconnection依赖,可以使用该PersistentCookieJar

您只需要创建一个PersistentCookieJar实例,然后将其传递给OkHttp构建器:

代码语言:javascript
运行
复制
CookieJar cookieJar =
                    new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context));

OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .cookieJar(cookieJar)
                    .build();
票数 67
EN

Stack Overflow用户

发布于 2016-01-19 18:59:20

这里有一个简单的方法来创建您自己的CookieJar。它可以按你的意愿扩展。我所做的就是用这个CookieJar实现一个OkHttpClient并使用OkHttpClient.Builder构建这个CookieJar。

代码语言:javascript
运行
复制
public class MyCookieJar implements CookieJar {

    private List<Cookie> cookies;

    @Override
    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
        this.cookies =  cookies;
    }

    @Override
    public List<Cookie> loadForRequest(HttpUrl url) {
        if (cookies != null)
            return cookies;
        return new ArrayList<Cookie>();

    } 
}

下面是如何创建OkHttpClient

代码语言:javascript
运行
复制
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.cookieJar(new MyCookieJar());
OkHttpClient client = builder.build();
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34881775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档