okhttp-utils的封裝之okhttp的使用


HTTP是現代應用的網絡。這就是我們如何交換數據和媒體。讓你的東西做HTTP有效負載的速度和節省帶寬。

okhttp是HTTP客戶端的有效默認:

  • HTTP 2支持允許所有請求相同的主機共享一個插座。
  • 連接池減少請求的延遲(如HTTP / 2不可用)。
  • 透明的gzip收縮下載大小。
  • 響應緩存避免完全重復要求網絡。

 

okhttp堅守當網絡是麻煩:它會悄悄地從常見的連接問題恢復。如果你的服務有多個IP地址okhttp將備用地址,如果第一次連接失敗。這是IPv4向IPv6必要冗余的數據中心托管服務。okhttp發起新的連接特點現代TLS(SNI,alpn),落回TLS 1如果握手失敗。

使用okhttp是容易的。它的請求/響應的API的設計與流暢的建設者和不變性。它同時支持同步和異步調用阻塞調用回調函數。

okhttp支持Android 2.3及以上。對於java,最低要求是1.7。

 

最近半年來身邊開發的朋友越來越多的提到OkHttp,上谷歌百度一下,確實OkHttp成了時下最火的HTTP框架。現在把自己整理的官方教程分享給大家,希望給初學者帶來幫助。

主要包含了一些常見的操作:HTTP GET, HTTP POST,POST單個和多個文件上傳),圖片加載等。如圖:

 

   

GET請求

public void getHttp() {
        OkHttpUtils.get().url("http://www.baidu.com").id(100).build()
                .execute(new MyStringCallback());
    }

POST請求

public void postHttp() {
        OkHttpUtils.post().url(url).addParams("q", "test")
                .addParams("showapi_appid", "11548")
                .addParams("showapi_timestamp", "201601012135954")
                .addParams("showapi_sign", "bb1d15ab7ce646ec87cc89d684ca4bcb")
                .build()//
                .execute(new MyStringCallback());

文件上傳

  /**
    * 提交單個文件
    */
OkHttpUtils.postFile().url(url).file(file).build()
            .execute(new MyStringCallback());
 /***
     * 
     * post表單形式上傳多個文件
     * 
     * @param view
     */
    public void postFile() {
        String path4 = "/storage/emulated/legacy/Tencent/MobileQQ/qbiz/html5/2312/sqimg.qq.com/"
                + "qq_product_operations/dyzx_folder/images/bg.jpg";
        File file4 = new File(path4);
        Map<String, String> params = new HashMap<String, String>();
        params.put("key", "value");
        params.put("key", "value");
        OkHttpUtils.post().addFile("filedata0", "bg.jpg", file4)
                .addFile("filedata1", "bg.jpg", file4).url(url).params(params)//
                .build()//
                .execute(new MyStringCallback());
    }

顯示圖片

public void getImage(View view) {
        String url = "http://avatar.csdn.net/8/6/0/1_dickyqie.jpg";
        OkHttpUtils.get().url(url).tag(this).build().connTimeOut(20000)
                .readTimeOut(20000).writeTimeOut(20000)
                .execute(new BitmapCallback() {
                    @Override
                    public void onError(Call call, Exception e, int id) {
                        _mTextView.setText("onError:" + e.getMessage());
                    }

                    @Override
                    public void onResponse(Bitmap bitmap, int id) {
                        mImageView.setImageBitmap(bitmap);
                    }
                });
    }

Post JSON

/***
     * 
     * 
     * 提交一個Gson字符串到服務器端,注意:傳遞JSON的時候,不要通過addHeader去設置contentType,
     * 而使用.mediaType(MediaType.parse("application/json; charset=utf-8")).。
     * 
     * @param view
     */
    public void postString(View view) {
        OkHttpUtils.postString().url(url)
                .content(new Gson().toJson(new Bean("zhy", "123")))
                .mediaType(MediaType.parse("application/json; charset=utf-8"))
                .build().execute(new MyStringCallback());
    }

AndroidManifest.xml配置

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

 

Android Studio

compile 'com.zhy:okhttputils:2.6.2'

 

 

Eclipse

下載最新jar:okhttputils-2_6_2.jar  okhttp.jar  okio.jar   注:點擊可下載,

 

 

工具類代碼太多未完全給出,直接下載即可調試或使用。

 

代碼點擊下載

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM