OkHttp的单例模式以及post和get请求

package com.bw.shoppingpractice.uitls;

import android.util.Log;

import java.io.IOException;
import java.util.Map;

import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

public class OkHttp {
//    单例模式
    private static OkHttp okHttp;
    private HttpLoggingInterceptor httpLoggingInterceptor;

    private OkHttp() {
    }
    public static OkHttp getInstance()
    {
        if (okHttp==null)
        {
//            同步锁
            synchronized (OkHttp.class)
            {
                if (okHttp==null)
                {
                    okHttp=new OkHttp();
                }
            }
        }
        return okHttp;
    }
    public void doPost( Map<String,String> list,String url, Callback callback)
    {
        httpLoggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
                Log.i("xxx",message);
            }
        });
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        FormBody.Builder builder=new FormBody.Builder();
//        遍历集合
        for (String key:list.keySet()) {
            builder.add(key,list.get(key));
        }

        OkHttpClient okHttpClient=new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {
                        Request request=chain.request()
                                .newBuilder()
                                .addHeader("userId","userId")
                                .addHeader("sessionId","sessionId")
                                .build();
                        return chain.proceed(request);
                    }
                })
                .build();
//        构建
        FormBody bulid=builder.build();
        Request request=new Request.Builder().url(url).post(bulid).build();
        okHttpClient.newCall(request).enqueue(callback);
    }
//    get
    public void doGet(final String userId, final String sessionId, final String url, Callback callback)
    {
        OkHttpClient okHttpClient=new OkHttpClient.Builder()
                 .addInterceptor(new Interceptor() {
                     @Override
                     public Response intercept(Chain chain) throws IOException {
                         Request request=chain.request()
                                 .newBuilder()
                                 .addHeader("userId",userId)
                                 .addHeader("sessionId",sessionId)
                                 .build();
                         return chain.proceed(request);
                     }
                 })
                .build();
        Request request=new Request.Builder().url(url).build();
        okHttpClient.newCall(request).enqueue(callback);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44329686/article/details/89010165