okHttpClient--post/get請求

package cgg.com.homework.NetUtil;

import android.os.Environment;

import java.io.File;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;

/**
 * author: Wanderer
 * date:   2018/1/9 16:38
 * email:  none
 */

public class OkHttpUtil {
    private OkHttpClient okHttpClient;

    public OkHttpClient getInstance() {

        if(okHttpClient == null){
            // 設置緩存目錄
            File okHttPCache = new File(Environment.getExternalStorageDirectory(), "cache");
            // 設置緩存大小
            int cacheSize = 10*1024*1024;

            synchronized (OkHttpUtil.class){
                okHttpClient = new OkHttpClient.Builder() // 構建者
                        .connectTimeout(15, TimeUnit.SECONDS) // 連接超時
                        .readTimeout(15,TimeUnit.SECONDS)     // 讀取超時
                        .writeTimeout(15,TimeUnit.SECONDS)    // 寫入超時
                        .cache(new Cache(okHttPCache.getAbsoluteFile(),cacheSize)) // 設置緩存
                        .build(); // 閉環
            }
        }
        return okHttpClient;
    }

    /**
     * get請求
     */

    public void doGet(String url, Callback callback){
        // 獲取OkHttpClient對象
        OkHttpClient mHttpClient = getInstance();
        // 獲取Request對象
        Request request = new Request.Builder().url(url).build();
        // 獲取Call對象
        Call call = mHttpClient.newCall(request);
        // 執行異步請求
        call.enqueue(callback);
    }

    /**
     * post請求
     */
    public void doPost(String url, Map<String,String> parameters,Callback callback){
        // 獲取OkHttpClient對象
        OkHttpClient mHttpClient = getInstance();
        // 獲取構建者
        FormBody.Builder builder = new FormBody.Builder();
        // 遍歷集合
        for (String key: parameters.keySet()) {
            // 添加上傳的參數
            builder.add(key,parameters.get(key));
        }
        // 獲取Request對象
        Request request = new Request.Builder().url(url).post(builder.build()).build();
        // 獲取Call
        Call call = mHttpClient.newCall(request);
        // 執行請求
        call.enqueue(callback);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章