1. 程式人生 > >Android使用OkHttp例項,以及OkHttp方法封裝

Android使用OkHttp例項,以及OkHttp方法封裝

本文在Android中使用OkHttp3實現資料的上傳獲取,圖片的下載

一、在AndroidStudio中新建專案

二、在build.gradle中新增依賴

  1. compile 'com.squareup.okhttp3:okhttp:3.6.0'  

三、新建utils包,並在包中新建OkManager.java 類

  1. package cc.example.com.utils;  
  2. import android.graphics.Bitmap;  
  3. import android.graphics.BitmapFactory;  
  4. import android.os.Handler;  
  5. import android.os.Looper;  
  6. import org.json.JSONException;  
  7. import org.json.JSONObject;  
  8. import java.io.IOException;  
  9. import java.util.Map;  
  10. import okhttp3.Call;  
  11. import okhttp3.Callback;  
  12. import okhttp3.FormBody;  
  13. import okhttp3.MediaType;  
  14. import okhttp3.OkHttpClient;  
  15. import okhttp3.Request;  
  16. import okhttp3.RequestBody;  
  17. import okhttp3.Response;  
  18. /** 
  19.  * Created by Administrator on 2017/2/15 0015. 
  20.  * 封裝工具類 
  21.  * 這一個類主要將OkHttp3工具類進行封裝,用於對資料的傳輸,包括Spring,Json,img,表單等資料的提交與獲取 
  22.  */
  23. publicclass OkManager {  
  24.     private OkHttpClient client;  
  25.     privatevolatile
    static OkManager manager;   //防止多個執行緒訪問時
  26.     privatefinal String TAG = OkManager.class.getSimpleName();  //獲得類名
  27.     private Handler handler;  
  28.     //提交json資料
  29.     privatestaticfinal MediaType JSON = MediaType.parse("application/json;charset=utf-8");  
  30.     //提交字串資料
  31.     privatestaticfinal MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown;charset=utf-8");  
  32.     private OkManager() {  
  33.         client = new OkHttpClient();  
  34.         handler = new Handler(Looper.getMainLooper());  
  35.     }  
  36.     //採用單例模式獲取物件
  37.     publicstatic OkManager getInstance() {  
  38.         OkManager instance = null;  
  39.         if (manager == null) {  
  40.             synchronized (OkManager.class) {                //同步程式碼塊
  41.                 if (instance == null) {  
  42.                     instance = new OkManager();  
  43.                     manager = instance;  
  44.                 }  
  45.             }  
  46.         }  
  47.         return instance;  
  48.     }  
  49.     /** 
  50.      * 請求返回的是JSON字串 
  51.      * 
  52.      * @param jsonValue 
  53.      * @param callBack 
  54.      */
  55.     privatevoid onSuccessJsonStringMethod(final String jsonValue, final Fun1 callBack) {  
  56.         handler.post(new Runnable() {  
  57.             @Override
  58.             publicvoid run() {  
  59.                 if (callBack != null) {  
  60.                     try {  
  61.                         callBack.onResponse(jsonValue);  
  62.                     } catch (Exception e) {  
  63.                     }  
  64.                 }  
  65.             }  
  66.         });  
  67.     }  
  68.     /** 
  69.      * 請求返回相應結果的是Json物件 
  70.      * 
  71.      * @param jsonValue 
  72.      * @param callBack 
  73.      */
  74.     privatevoid onSuccessJsonObjectMethod(final String jsonValue, final Fun4 callBack) {  
  75.         handler.post(new Runnable() {  
  76.             @Override
  77.             publicvoid run() {  
  78.                 if (callBack != null) {  
  79.                     try {  
  80.                         callBack.onResponse(new JSONObject(jsonValue));  
  81.                     } catch (JSONException e) {  
  82.                     }  
  83.                 }  
  84.             }  
  85.         });  
  86.     }  
  87.     /** 
  88.      * 返回響應的物件是一個位元組陣列 
  89.      * 
  90.      * @param data 
  91.      * @param callBack 
  92.      */
  93.     privatevoid onSuccessByteMethod(finalbyte[] data, final

    相關推薦

    Android使用OkHttp例項以及OkHttp方法封裝

    本文在Android中使用OkHttp3實現資料的上傳獲取,圖片的下載 一、在AndroidStudio中新建專案 二、在build.gradle中新增依賴 compile 'com.squareup.okhttp3:okhttp:3.6.0'

    ActiveMQ入門例項以及封裝

    這篇文章適合已經搭建好了activeMQ環境的人,需要封裝下activeMQ基本功能的人。封裝的不好,僅作參考。package com.quhuhu.sync.util; import javax.jms.Connection; import javax.jms.Conn

    關於萬金6.0源碼下載numpy.tile()的重要特性以及使用方法超級詳細例子!!!和使用介紹

    函數 函數功能 *** 轉換成 ref 在一起 imp 復制。 lis 函數功能萬金6.0源碼下載dsluntan.com 企娥3393756370:按照各個方向復制。 先介紹特性在介紹使用方法 特性之一:對於列表和數組,使用該方法後都會變成數組;對於矩陣,屬性不變還是矩陣

    java初學者常見的幾大誤區以及處理方法

    java初學者常見的幾大誤區,以及處理方法! 小編相信這裡有很多學習java的朋友,小編整理了一份java方面的學習資料,想要獲取的可以加我的java學習群的喲,928204055。歡迎愛學習Java的你們。 誤區四:容易驕傲,以為自己會點技術就得意起來

    IO知識點(一)—— Java的 File類以及常用方法

    注意:檔案和資料夾都是用 File 代表   1,建立一個檔案物件  使用絕對路徑或者相對路徑建立 File物件 public class AtWill { public static void main(String[] a

    web前端常用js方法封裝

    搜尋總結了一些前端日常開發中,常用的一些方法封裝 var myJs = { /* * 格式化日期 * @param dt 日期物件 * @returns {string} 返回值是格式化的字串日期 */ getDate

    09-Python面向物件-物件的生命週期以及週期方法

    學習地址: 撩課-Python大資料+人工智慧1 撩課-Python大資料+人工智慧2 撩課-Python大資料+人工智慧3 撩課-Python大資料+人工智慧4 撩課-Python大資料+人工智慧5 撩課-Python大資料+人工智慧6 撩課-Python-GUI程式設計-PyQt5

    對於過濾器中使用getInputStream()、getParameter()接收引數接收不到的一些知識以及解決方法

    昨天,我需要做一個從主專案分離出來的專案對主專案的功能的呼叫,但是在寫Http傳送Post請求時,遇到了主專案接收不到引數的情況,從而引起了我對專案接收引數的一些探討。 我們知道,對於spring專案接收引數用的最多的方式應該是request.getParam

    ZooKeeper叢集搭建例項以及整合dubbo時的配置

    ZooKeeper叢集搭建例項,以及整合dubbo時的配置 zookeeper是什麼: Zookeeper,一種分散式應用的協作服務,是Google的Chubby一個開源的實現,是Hadoop的分散式協調服務,它包含一個簡單的原語集,應用於分散式應用的協作服務,使得分散式

    講excel表插入oracle時出現的一些錯誤以及解決方法

    出現這個提示的時候是說明,在插入的employeename這一個欄位裡面有空值,切記,不是空格,是空值,而我們需要做的是看是否是遺漏了這個名字,或者是包含空值這一行不需要,這時刪除就行,具體情況,具體分析。 情況場景: 表A中有個欄位是外來鍵,關聯了表B中的某欄位,

    混合使用startServicebindService以及tartForegroud方法使用總結

    一.上次的兩個問題: 1.     在BindService為什麼不呼叫onServiceDisConnection() 類ServiceConnection中的onServiceDisconnected()方法在正常情況下是不被呼叫的,它的呼叫時機是當Service服務

    argument type mismatch出現的原因以及解決方法

    原因: Struts的ActionServlet在接受到頁面的請求後,會呼叫RequestUtils.populate方法對Form進行填值,而此方法又呼叫到BeanUtils.populate方法,而該方法進行填值時對不同型別的會進行轉換,而預設的ActionSer

    併發程式設計遊玩---ExecutorService的isShutdown()和isTerminated()以及一些方法的區別

    log.info("預更新開始"); ExecutorService executorService = PreloadExecutorServiceUtil.newExecutorService(); for (UpdateEnum updateEnum : UpdateEnu

    (常見面試問題)九種基本資料型別的大小以及他們的封裝

    注:事實上應該是八種基本資料型別,String類並不屬於基本型別。 整型有四種。其中byte和short應用於底層檔案處理或者需要佔據儲存空間量的大陣列。 整型 型別 大小 封裝類 byte 1位元組 Byte short 2位元組 Short int 4位元組 Integer long

    帶引數的函式以及呼叫方法

    <!DOCTYPE html><html><head><title>帶引數的函式</title></head><body><script>// 1.函式引數:// 在函式的呼叫中,

    深入學習Hibernate4_05hibernate中物件的四種狀態(臨時狀態持久化狀態遊離狀態刪除狀態)以及常用方法的介紹

    是什麼?        站在持久化的角度, Hibernate 把物件分為 4 種狀態: 持久化狀態, 臨時狀態, 遊離狀態, 刪除狀態. Session 的特定方法能使物件從一個狀態轉換到另一個狀態.       臨時物件:1.在使用代理主鍵的情況下,OID通常為null

    vue安裝環境過程出現的問題以及解決方法

    安裝完一次npm,下載了小demo後,過一段時間再去用vue忘記環境已經安裝好,再次安裝時,由於npm安裝時下載不全,一直在報錯,試用了很多方法,cmd 指令安裝vue-cli一直報錯,最後我還是選擇在原來demo 下修改,之前報Error: Cannot find mod

    請求被中止: 未能建立 SSL/TLS 安全通道以及解決方法

    場景描述: 我公司的網站之前就已經開發好了下單支援paypal支付,當然,這個是其他同事開發的。前段時間,主管讓我在另一個場景開發支援使用paypal支付,當時花了些時間看看關於paypal程式碼,然後就嘗試著寫了,雖然程式碼不多,很快就寫完了。不過接下來遇到的問題真的很頭疼,在沙盒模式下除錯,一直會跳出異

    由於ndk引發的幾個bug以及解決方法

    問題一: Error:(12, 0) Error: NDK integration is deprecated in the current plugin.   Consider trying th

    關係型資料庫和非關係型資料庫的選擇以及替代方法(mysql替代mongodb)

    1、在以上方式設計的bussDB庫的狀態下,對於增刪改查操作,關係型資料庫和非關係型資料庫的效能開銷基本一致,因為所有表的資料量都非常小,小於百萬級,因為在千萬級資料量以下,關係型資料庫只要設定了索引,都是非常快的。 2、在效能方面一致的情況下,非關係資料庫的缺點在於無法支援動態連線查詢應用,即sql中的jo