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" />

工具类代码太多未完全给出,直接下载即可调试或使用。

http://download.csdn.net/detail/dickyqie/9652357

时间: 2024-10-29 10:46:14

okhttp-utils的封装之okhttp的使用的相关文章

Rxjava+ReTrofit+okHttp深入浅出-终极封装

Rxjava+ReTrofit+okHttp深入浅出-终极封装 背景: 学习Rxjava和retrofit已经很长时间了,功能确实很强大,但是使用起来还是有点复杂,代码的重复性太高,所以决定把基于retrofit和rxjava的处理统一封装起来,实现的功能: 1.Retrofit+Rxjava+okhttp基本使用方法 2.统一处理请求数据格式 3.统一的ProgressDialog和回调Subscriber处理 4.取消http请求 5.预处理http请求 5.返回数据的统一判断 效果: 封装

Android实际开发之网络请求组件的封装(OkHttp为核心)

趁周末时间撸了两天代码,将OkHttp网络请求框架进行了一次简单封装,对于实际开发非常有用.. 此次封装主要针对我们经常使用的网络请求的步骤进行封装,在已有框架OkHttp的基础上进行实际开发的封装 发送一个网络请求,有以下三个功能模块: 一:request处理 二:OkHttp核心处理 三:callback处理 我们进行网络请求组件的封装也是根据这三大模块进行封装的,下面规划一下这次封装的一个思维导图: 根据以上思维导图,我们第一步,先进行request的封装: 以下是封装的一个CommonR

Rxjava+ReTrofit+okHttp深入浅出-终极封装四(多文件下载之断点续传)

Rxjava+ReTrofit+okHttp深入浅出-终极封装四(多文件下载之断点续传) 背景 断点续传下载一直是移动开发中必不可少的一项重要的技术,同样的Rxjava和Retrofit的结合让这个技术解决起来更加的灵活,我们完全可以封装一个适合自的下载框架,简单而且安全! 效果 实现 下载和之前的http请求可以相互独立,所以我们单独给download建立一个工程moudel处理 1.创建service接口 和以前一样,先写接口 注意:Streaming是判断是否写入内存的标示,如果小文件可以

[Android]OkHttp的简单封装-辅助框架

序言 OkHttp 的强大算是毋庸置疑了:OkHttp 基本在网络层能完成任何事情,适用任何情况:正因为如此 OkHttp 每次构建一个请求的时候不得不写大量的代码来完成相应的配置.在这里分享一个极限封装OkHttp的辅助框架,通过该框架能最大程度简化你的开发负担.好话不多说,往下看看就知道好不好. 原生 在这里举例几个原生情况下使用 okhttp 的情况. GET public void get() { Request.Builder builder = new Request.Builder

自己封装的OKhttp请求

package com.create.qdocumentimtest.rxjavatest; import com.squareup.okhttp.Callback; import com.squareup.okhttp.FormEncodingBuilder; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.RequestBody; i

封装了okhttp的网络框架,支持大文件上传下载,上传进度...

本帖最后由 anjoy紫外线 于 2016-4-20 16:42 编辑   1.用法 对于Eclipse不能运行项目的,提供了apk供直接运行,位于项目根目录 okhttputils_v1.x.x.apk. 本项目Demo的网络请求是我自己的服务器,有时候可能不稳定,网速比较慢时请耐心等待.. 对于Android Studio的用户,可以选择添加: compile 'com.lzy.net:okhttputils:1.3.0'  //可以单独使用,不需要依赖下方的扩展包    compile'c

okhttp和第三方封装好的OKHttp库-okhttp-utils

1_OKHttp简介 1.1_简介 OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,还有透明的GZIP压缩,请求缓存等优势,其核心主要有路由.连接协议.拦截器.代理.安全性认证.连接池以及网络适配,拦截器主要是指添加,移除或者转换请求或者回应的头部信息 这个库也是square开源的一个网络请求库(okhttp内部依赖okio).现在已被Google使用在Android源码上了,可见其强大. 关于网络请求库,现在应该还有很多人在使用a

Android 普通okhttp、okhttp utils执行 post get请求,文件上传下载、请求图片

public class OKHttpActivity extends Activity implements View.OnClickListener { public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); /** * get请求 */ private static final int GET = 1; /** * post请求 */ private stat

OkHttp使用进阶 译自OkHttp Github官方教程

没有使用过OkHttp的,可以先看OkHttp使用介绍 英文版原版地址 Recipes · square/okhttp Wiki 同步get 下载一个文件,打印他的响应头,以string形式打印响应体.响应体的 string() 方法对于小文档来说十分方便.高效.但是如果响应体太大(超过1MB),应避免适应 string()方法 ,因为他会将把整个文档加载到内存中.对于超过1MB的响应body,应使用流的方式来处理body. private final OkHttpClient client =