1. 程式人生 > >Android----------OkHttp網路請求框架Get和Post簡單封裝(泛型)

Android----------OkHttp網路請求框架Get和Post簡單封裝(泛型)

請求框架的類:

OkHttp依賴:

compile 'com.squareup.okhttp3:okhttp:3.8.1'
RecyclerView依賴:
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'

public class OkHttpUtils {
    private Handler hand=new Handler();
    private NetDataCallback netDataCallback;
    public <T>void getdata(String url, final 
NetDataCallback netDataCallback, final Class<T> tclass) { //初始化一個 OkHttpClient 並且設定連線和讀取超時時間 OkHttpClient okhttp = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //構造一個Request物件
Request request = new Request.Builder().url(url).build(); //通過request的物件去構造得到一個Call物件 Call call = okhttp.newCall(request); //呼叫的是call.enqueue,將call加入排程佇列,然後等待任務執行完成,我們在Callback中即可得到結果。 call.enqueue(new Callback() { //失敗的情況 @Override public void onFailure(Call call, IOException e) { Log.e
("///////", "onFailure"); netDataCallback.fail(499,e.getMessage()); } //成功的情況 @Override public void onResponse(Call call, Response response) throws IOException { Gson gson=new Gson(); T t = gson.fromJson(response.body().string(), tclass); final Message msg = Message.obtain(); msg.what=ok; msg.obj=t; hand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } //post請求 public <T>void getLoadDataPost(String url, final NetDataCallback netDataCallback, final Class<T> tClass, RequestBody body){ this.netDataCallback=netDataCallback; OkHttpClient okHttpClient = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS) .connectTimeout(10, TimeUnit.SECONDS) .build(); final Request request = new Request.Builder().url(url).post(body).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { netDataCallback.fail(499,e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { T t = new Gson().fromJson(response.body().string(), tClass); final Message msg = Message.obtain(); msg.what = OK; msg.obj = t; hand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } }

定義一個介面:

public interface NetDataCallback<T> {
    void success(T t);
    void fail(int code,String str);
}

相關推薦

Android----------OkHttp網路請求框架GetPost簡單封裝

請求框架的類: OkHttp依賴: compile 'com.squareup.okhttp3:okhttp:3.8.1' RecyclerView依賴: compile 'com.android.support:recyclerview-v7:26.0.0-alpha1

Android okHttp網路請求Get/Post請求

   前言:       之前專案中一直使用的Xutils開源框架,從xutils 2.1.5版本使用到最近的xutils 3.0,使用起來也是蠻方便的,只不過最近想著完善一下app中使用的開源框架,由於Xutils裡面包含的東西相對來說比較雜,有資料庫、圖片快取、註解、網路請求等等,秉著一個開源庫只處理一

ListList的區別

java泛型的兩種用法:List是泛型方法,List public interface Dao{ List<T> getList(){}; } List<String> getStringList(){ return dao.

Android入門 傳送HTTP的GETPOST請求

                HTTP的請求詳解在我的部落格中已經講解過:如HttpRequestUtil.sendGetRequest();是傳送GET請求;一、核心程式碼HTTP GET 核心程式碼:(1)String value = URLEncoder.encode(String value,"UT

AndroidOkHttp 網路請求框架的學習封裝

自述:在此以前,自己從來沒有寫過部落格,今天是第一次寫,真心是有點小激動,正要下筆卻不知道應該從何說起,若是寫的不好,請各位見諒吧!關於網路請求,我自認為自己是一個菜鳥,沒有任何經驗,之前做的專案都是別人封裝好,告訴我怎麼呼叫就好了。至於怎麼封裝邏輯的,真是一竅不通,可近來

Android常用網路請求框架xUtils、OkHttp、Volley、Retorfit對比

網路請求框架總結1.xutils     此框架龐大而周全,這個框架可以網路請求,同時可以圖片載入,又可以資料儲存,又可以 View 註解,使用這種框架很方便,這樣會使得你整個專案對它依賴性太強,萬一以後這個庫不維護了,或者中間某個模組出問題了,這個影響非常大,所以在專案開發時,一般會更喜歡選擇專注某一領域

iOS開發網路篇—傳送GETPOST請求使用NSURLSession

1)該文主要介紹如何使用NSURLSession來發送GET請求和POST請求   2)本文將不再講解NSURLConnection的使用,如有需要了解NSURLConnection如何傳送請求。     詳細資訊,請參考:http://www.cnblogs.co

HTTP請求getpost的區別是什麽

信息 兩種 緩存 數據 request 取數 安全性 body 數據類型 GET和POST是Http請求中最常用的兩種請求方法 首先介紹GET與POST的差異:   (1)GET請求資源數據,POST向服務器傳遞需要處理的數據   (2)GET傳遞數據大小不超過2kb,PO

雜談——HTTP的兩種請求GETPOST的作用、區別與本質

當面試的時候,考官問你:GET和POST的作用是什麼,它們又有什麼區別呢 這時候你該如何回答呢? 且讓我們來理一理思緒~ 開始入手web專案的夥伴們基本上都開始使用GET和POST請求了,那這兩種請求到底是什麼東西呢,它又有什麼作用? 今天我們來細細瞭解一下。GET和POST作

HTTP請求方式GETPOST的區別詳解

HTTP有兩部分組成:請求與響應,下面分別整理。 一.HTTP請求 1.HTTP請求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP請

HTTP 請求Get Post 區別

一、原理區別 一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;再FORM表單中,可以通過設定Method指定提交方式為GET或者POST提交方式,預設為GET提交方式。 HTTP定義了與伺服器互動的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,H

HTTP請求GETPOST的分析

近期一位朋友想寫iOS上的應用,打算從微博應用做起,第一步先做一個微部落格戶端出來,然後做一個手機微博應用出來,具體做什麼還不甚清楚,其實是在嘗試中。而我正好在用asio寫網路庫,於是主動提出了承擔web伺服器網路庫的部分,也是為了給我自己封裝的網路庫中增加一個http模組。http大家都不陌生,每天開啟網頁

http協議請求getpost的區別與聯絡

                 網路通訊中HTTP協議詳解 一、什麼是HTTP協議     HTTP協議全稱:HyperText Transfer Protocol 是一種超文字傳輸協議,通過UR

HTTP 請求方式: GETPOST的比較

什麼是HTTP? 超文字傳輸協議(HyperText Transfer Protocol -- HTTP)是一個設計來使客戶端和伺服器順利進行通訊的協議。 HTTP在客戶端和伺服器之間以request-response protocol(請求-回覆協議)工作。 GET

關於HTTP 請求方式: GETPOST的比較的本質

一,一般現在流傳的HTTP請求:GET和POST的比較是這樣的: GET和POST是HTTP的兩個常用方法。 什麼是HTTP? 超文字傳輸協議(HyperText Transfer Protocol -- HTTP)是一個設計來使客戶端和伺服器順利進行通訊的協議。 HT

OkHttp3-Android網路請求框架常用用法介紹與例項mob請求天氣預報

前言: OkHttp是Square開發的第三方庫,用於傳送和接收基於HTTP的網路請求。它建立在Okio庫之上,通過建立共享記憶體池,它嘗試通過標準Java I / O庫更高效地讀取和寫入資料。它還是Retrofit庫的底層庫,為使用基於REST的AP

利用express中介軟體http-proxy-middleware代理前端跨域請求(包含getpost)

1,建立app.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('mo

Android okHttp網路請求之快取控制Cache-Control

前言:     前面的學習基本上已經可以完成開發需求了,但是在專案中有時會遇到對請求做個快取,當沒網路的時候優先載入本地快取,基於這個需求我們來學習一直okHttp的Cache-Control。      okHttp相關文章地址: Cache-Control:      Cache-Contro

Android okHttp網路請求之Retrofit+Okhttp+RxJava組合

前言:     通過上面的學習,我們不難發現單純使用okHttp來作為網路庫還是多多少少有那麼一點點不太方便,而且還需自己來管理介面,對於介面的使用的是哪種請求方式也不能一目瞭然,出於這個目的接下來學習一下Retrofit+Okhttp的搭配使用。      okHttp相關文章地址: Retrof

Android okHttp網路請求之檔案上傳下載

前言:    前面介紹了基於okHttp的get、post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天來實現一下基於okHttp的檔案上傳、下載。      okHttp相關文章地址: 檔案上傳: 1.)不帶引數上傳檔案