簡體   English   中英

如何使用Android版Picasso設置Cookie?

[英]How can I set cookies using Picasso for Android?

我嘗試過設置使用Picasso請求圖像時要發送的cookie,但它似乎沒有通過監視網絡中的HTTP標頭來發送任何cookie。

我已按照以下方式構建了一個Picasso實例,並嘗試將HttpURLConnection用於下載程序並使用cookieSyncManager設置cookie。

我可能做錯了什么?

Builder picassoBuilder = new Picasso.Builder(this);
Downloader downloader = new UrlConnectionDownloader(this);
picassoBuilder.downloader(downloader);

Picasso picasso = picassoBuilder.build();

CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();

cookieManager.setCookie("http://example.com/", "key=value");
cookieSyncManager.sync();

picasso.with(this).load("http://example.com/image.php?image=test.png").into(imageView);

我終於設法使用OkHttp和OkHttp3Downloader做到了這一點。 您需要使用攔截器,然后在請求( ref )中設置cookie。 另外,您還需要手動設置緩存,因為(在某些情況下)使用自定義下載器( ref )時不起作用

OkHttpClient client = new OkHttpClient()
    .newBuilder()
    .addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            final Request original = chain.request();

            final Request authorized = original.newBuilder()
                    .addHeader("Cookie", CookieManager.getInstance().getCookie(yourUrl))
                    .addHeader("User-Agent", yourUserAgent)
                    .build();

            return chain.proceed(authorized);
        }
    })
    .cache(new Cache(context.getCacheDir(), 25 * 1024 * 1024))
    .build();



Picasso picasso = new Picasso.Builder(context)
                  .downloader(new OkHttp3Downloader(client))
                  .memoryCache(new LruCache(context))
                  .build();

picasso.load(yourUrlImage).into(yourView);

相依性

compile 'com.squareup.okhttp3:okhttp:3.8.1'
compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM