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请求
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()); }
显示图片
/*** * 加载图片 * * @param view */ 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("zqq", "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.jar okio.jar 注:点击可下载,
工具类代码太多未完全给出,直接下载即可调试或使用。
相关推荐
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
基于java的网吧管理系统答辩PPT.pptx
基于java的基于SSM架构的网上书城系统答辩PPT.pptx
tornado-6.1-cp37-cp37m-win32.whl
c语言气泡排序、插入排序、选择排序、快速排序、希尔排序、堆排序、合并排序_SortAlgorithm.zip
Keyboard Maestro 11.0.3_macwk.dmg
基于微信小程序的鲜花销售微信小程序答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-6.2b1-cp39-cp39-musllinux_1_1_x86_64.whl
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-6.1b2-cp38-cp38-manylinux2014_aarch64.whl
基于java的土家风景文化管理平台答辩PPT.pptx
jira安装包
基于java的机场网上订票系统答辩PPT.pptx
小区物业管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
yolo算法-金属-纸张-硬纸板垃圾数据集-13409张图像带标签-金属-纸张-硬纸板-塑料-其他-烟蒂-食物-玻璃.zip;yolo算法-金属-纸张-硬纸板垃圾数据集-13409张图像带标签-金属-纸张-硬纸板-塑料-其他-烟蒂-食物-玻璃.zip;yolo算法-金属-纸张-硬纸板垃圾数据集-13409张图像带标签-金属-纸张-硬纸板-塑料-其他-烟蒂-食物-玻璃.zip
项目介绍: 系统模块主要包括;用户、考试信息、考场信息、试卷、试题、考试等管理功能 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
Python脚本运行环境搭建所需要的资源包