okhttp-utils的封装之okhttp的使用

摘要:
让您的东西实现HTTP有效负载速度并节省带宽。Okhttp是HTTP客户端的有效默认值:HTTP2支持允许具有相同请求的所有主机共享套接字。Okhttp坚持认为,当网络出现问题时:它会悄悄地从常见的连接问题中恢复过来。如果您的服务有多个IP地址,如果第一次连接失败,okhttp将是备用地址。Okhttp启动了一个新的连接特性,即现代TLS,如果握手失败,则返回TLS1。使用okhttp很容易。Okhttp支持Android 2.3及以上版本。在过去的六个月里,我身边越来越多的朋友提到了OkHttp。去谷歌百度,OkHttp已经成为目前最流行的HTTP框架。

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单个和多个文件上传),图片加载等。如图:

    okhttp-utils的封装之okhttp的使用第1张

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   注:点击可下载,

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

代码点击下载

免责声明:文章转载自《okhttp-utils的封装之okhttp的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python “ cannot import name OrderedDict”支付宝转账到银行卡的二维码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Grub4dos安装和启动完全指南

1.从MBR开始。将GRUB4DOS启动代码安装到MBR后,您可以使用它将启动代码更容易地安装到MBR/启动扇区。...

微信分享之分享图片/分享图标不能显示

微信分享的分享图标/图片无法显示,主要是由于以下几个问题:1.确保分享界面调用成功,分享路径正确。2.确保共享图片的路径不使用中文或全半角字符。3.确保副本不包含敏感字符,如红包和收据。当共享接口未能成功加载时,将发生错误。在页面的前面使用隐藏的div来放置要制作缩略图的图片。记住,不能直接隐藏图片。style=“display:noen”,如果没有,则使用...

java中cookie存取值

Cookie保存值:CookieuserCookie=newCookie(“loginInfo”,loginInfo);userCookie.setMaxAge(30*24*60*60);//生存期为一个月30*24*60*60userCookie.setPath(“/”);response.addCookie(userCookie);Cookie值:Coo...

Office 2013 Professional Plus激活工具,光速激活-亲测可用

安装完成后显示installfinishing,窗口关不掉,我是直接结束的进程。如大家所说的不知道怎么的就激活了,居然还有点意外的爽。...

win10设置outlook开机自启

嗯。。。。因为我总是忘记在开始时(主要是懒惰)打卡我的展望,所以我想自己开始。它也应该非常简单。我在互联网上搜索了很多,但多次尝试后都失败了。最常见的在线搜索方法是制定任务计划,但我的电脑不知道为什么,然后我找到了一种随机操作后设置成功的方法。步骤如下:1。在“开始”菜单中打开Outlook图标以打开文件位置。2.找到路径,即启动项目对应的文件夹...

memset函数使用

sizeof(数据));结构参数{intx;int*p_x;par.p_x=newint[10];sizeof(par));memset(&amp;MyParameters*my=dynamic_cast&lt;程序运行到dynamic_cast时发生异常;mem.h&gt;intmain(void){inta[50];mem.h&a...