OKHTTP使用,包含有每次的特殊标识,个人使用超赞

本文详细介绍了如何在OKHTTP中利用SESSION和Cookie进行高效的网络请求管理,通过个人实践,总结了实用技巧,推荐给需要的开发者。
摘要由CSDN通过智能技术生成

再别人基础之上改版的,有附带SESSION跟Cookie标识

package com.lhcx.user.okhttp;

import android.os.Handler;
import android.os.Looper;

import com.lhcx.user.mybase.LG;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Cookie;
import okhttp3.CookieJar;
import okhttp3.FormBody;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;


public class OkHttpManager {

    /**
     * 静态实例
     */
    private static OkHttpManager sOkHttpManager;

    /**
     * okhttpclient实例
     */
    private OkHttpClient mClient;

    /**
     * 因为我们请求数据一般都是子线程中请求,在这里我们使用了handler
     */
    private Handler mHandler;

    /**
     * 构造方法
     */
    private OkHttpManager() {

//        mClient = new OkHttpClient();
        final Map<String, List<Cookie>> cookieStore = new HashMap<String, List<Cookie>>();
        mClient = new OkHttpClient.Builder()
                .cookieJar(new CookieJar() {

                    @Override
                    public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) {
                   
                        if (cookieStore.get("1") == null)
                            cookieStore.put("1", list);
                    }

                    @Override
                    public List<Cookie> loadForRequest(HttpUrl httpUrl) {
                        List<Cookie> cookies = cookieStore.get("1");
                       
                        return cookies != null ? cookies : new ArrayList<Cookie>();
                    }
                }).build();
        /**
         * 在这里直接设置连接超时.读取超时,写入超时
         */
        mClient.newBuilder().connectTimeout(10, TimeUnit.SECONDS);
        mClient.newBuilder().readTimeout(10, TimeUnit.SECONDS);
        mClient.newBuilder().writeTimeout(10, TimeUnit.SECONDS);

        /**
         * 如果是用的3.0之前的版本  使用以下直接设置连接超时.读取超时,写入超时
         */

        //client.setConnectTimeout(10, TimeUnit.SECONDS);
        //client.setWriteTimeout(10, TimeUnit.SECONDS);
        //client.setReadTimeout(30, TimeUnit.SECONDS);


        /**
         * 初始化handler
         */
        mHandler = new Handler(Looper.getMainLooper());
    }


    /**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值