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

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

代码点击下载

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

  1. Android OkHttp网络连接封装工具类

    package com.lidong.demo.utils; import android.os.Handler; import android.os.Looper; import com.googl ...

  2. 自己封装的OKhttp请求

    package com.create.qdocumentimtest.rxjavatest; import com.squareup.okhttp.Callback; import com.squar ...

  3. Android okHttp网络请求之Retrofit+Okhttp+RxJava组合

    前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少少有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下R ...

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

    public class OKHttpActivity extends Activity implements View.OnClickListener { public static final M ...

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

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/3997368.html 没有使用过OkHttp的,可以先看Ok ...

  6. 【转】OkHttp使用进阶 译自OkHttp Github官方教程

    作者:GavinCT 出处:http://www.cnblogs.com/ct2011/ 英文版原版地址 Recipes · square/okhttp Wiki 同步get 下载一个文件,打印他的响 ...

  7. OKHttp使用详解

    一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak ...

  8. 7-OKHttp使用详解,步骤挺详细的,适合初学者使用!

    OKHttp使用详解,步骤挺详细的,适合初学者使用! 一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Squ ...

  9. okhttputils【 Android 一个改善的okHttp封装库】使用(一)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本文使用的OKHttp封装库是张鸿洋(鸿神)写的,因为在项目中一直使用这个库,所以对于一些常用的请求方式都验证过,所以特此整理下. ...

随机推荐

  1. [原创]cocos2d-x研习录-第三阶 特性之触屏

    游戏跟视频最大的区别就是互动,而手游(基于智能手机)主要靠触摸屏幕.重力传感和虚拟键盘等方式实现互动.这里主要记录Cocos2D-x对玩家触屏操作的处理. 在Cocos2D-x中触屏分为单点触屏和多点 ...

  2. IEnumerable 和 IQueryable 区别

    IQueryable继承自IEnumerable,所以对于数据遍历来说,它们没有区别. 但是IQueryable的优势是它有表达式树,所有对于IQueryable的过滤,排序等操作,都会先缓存到表达式 ...

  3. ASP.NET 下拉列表绑定枚举类型值,不用再新建一个枚举表

    public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArg ...

  4. DB_MYSQL_mysql-5.7.10-winx64解压版安装笔记

    1.http://dev.mysql.com/downloads/mysql/ 里面下载Windows (x86, 64-bit), ZIP Archive mysql-5.7.10-winx64.z ...

  5. UVA 1658 海军上将(拆点法+最小费用限制流)

    海军上将 紫书P375 这题我觉得有2个难点: 一是拆点,要有足够的想法才能把这题用网络流建模,并且知道如何拆点. 二是最小费用限制流,最小费用最大流我们都会,但如果限制流必须为一个值呢?比如这题限制 ...

  6. MessageBox

    首先要知道MessageBox返回的值为DialogResult类型.返回值可能有如下: DialogResult.OK  //点击“确定”按钮后返回的值 DialogResult.YES  //点击 ...

  7. 隐语义模型LFM(latent factor model)

    对于某个用户,首先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品.总结一下,这个基于兴趣分类的方法大概需要解决3个问题. 如何给物品进行分类? 如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度? ...

  8. PASCAL==CALLBACK==WINAPI==__stdcall

    VC里面:PASCAL==CALLBACK==WINAPI==__stdcall         _stdcall是Pascal程序的缺省调用方式,通常用于Win32  Api中,函数采用从右到左的压 ...

  9. 技术那么多,你想看看JSON Schema的测试吗?

    目录 1. 什么是JSON Schema? 2. 如何定义一个JSON Schema 3. 如何测试JSON Schema a) 使用JSON Schema validator GUI b) 在Jav ...

  10. sencha touch 入门系列 (二)sencha touch 开发准备

    这是本人第一次写博客教程,没什么经验,文笔也不是很好,写这教程一方面为了巩固自己这段时间的学习成果,一方面帮助大家解决问题,欢迎大家多提建议,指出问题.接下来我们就开始我们的sencha touch开 ...