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 注:点击可下载,
工具类代码太多未完全给出,直接下载即可调试或使用。
相关推荐
OkHttp3.0封装框架,内部使用gson解析json数据 项目地址:https://github.com/open-android/OkHttp3Utils 简书:http://www.jianshu.com/p/e9258c1bc5ce 爱生活,爱学习,更爱做代码的搬运工,分类查找更方便请下载黑马...
MD5、RSA、Base64Utils、DialogUtil、ZXingUtils、GlideUtil、、、工具类 自己总结了一些必备的工具类,可直接放入工程,简单调用 对OkHttp进行了封装,简单调用,便于操作 进行了post、get、文件上传等进行封装
通过学习和实践这些代码,你将能够熟练掌握OkHttp在实际应用中的使用,提升你的Android开发技能。 总的来说,OkHttp以其高效的性能和简洁的API,成为Android开发中网络请求的首选库。通过GET和POST请求,我们可以...
本教程将详细介绍 OkHttp 的基本使用方法,以及如何通过 `okhttp-utils-master` 示例项目进行实践操作。 ### 一、OkHttp 特点 1. **连接池**:OkHttp 通过维护一个持久的连接池,可以重用先前建立的 TCP 连接,...
- **网络通信**:可能包含HTTP请求工具,如使用OkHttp或Retrofit进行API调用,支持异步请求和响应处理。 - **数据解析**:JSON解析工具,如Gson或Jackson,XML解析如PullParser,帮助处理服务器返回的数据。 - **...
4. **使用OkHttp3.0封装工具类** - 开发者通常会封装一个OkHttp的工具类,以简化网络请求的调用,提供统一的接口供其他模块使用。封装的内容可能包括设置baseUrl、添加全局Header、处理请求结果等。 - 通过`...
3. **认证和授权**:对于需要身份验证和权限控制的 API,conquer-utils 可能会提供封装好的认证机制,如 OAuth2、JWT(JSON Web Tokens)或者基本的 HTTP 认证,使得开发者能够更简单地处理这些安全问题。...
【OkHttp Utils OkHttpUtils】是一个基于Android平台的OkHttp网络请求库的工具类集合,旨在简化使用OkHttp进行网络请求的过程。OkHttp是Square公司开发的一个高效的HTTP客户端,它以其出色的性能、低资源消耗以及对...
web-sfdc-utils库通过封装这些常见的网络操作,使开发者可以更加专注于业务逻辑,而非底层通信细节。它可能包含了如HttpClient或者OkHttp等流行的HTTP客户端库的抽象和扩展,以便提供一致且易于使用的API。 对于...
- **网络请求工具**:可能提供了对OkHttp或Retrofit的封装,简化网络API的调用。 - **图片加载工具**:如使用Glide或Picasso进行图片的加载和缓存处理。 - **数据解析工具**:如使用Gson或Jackson进行JSON数据的...
OkHttpUtils是旧版接口,而OkHttp3Utils是基于OkHttp3的新版接口,推荐使用后者。首先,在项目中创建一个工具类,例如命名为`NetworkUtil`,并引入OkHttp3Utils: ```java import ...
3. **网络通信**:Android开发中经常需要与服务器进行数据交换,工具库可能会提供异步网络请求的封装,如使用OkHttp或Volley库进行HTTP请求,或者处理Gson或Jackson进行数据转换。 4. **权限管理**:随着Android...
在Android开发中,工具类(Utils Class)是程序员经常创建的一种辅助代码结构,用来封装一些通用功能,提高代码复用性和可维护性。本篇主要介绍一个基于张鸿洋(小灰灰)实现的OkHttp封装库,它是一个用于简化网络...
okhttp-OkGo OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持RxJava,比Retrofit更简单易用。该库是封装了okhttp的标准RESTful风格的网络框架,支持大文件上传下载,上传进度回调,下载进度回
通过封装的okthps,就能轻松实现客户端与服务端的
源码中,你可以看到它是如何利用OkHttp或者Volley进行网络请求的封装。 2. **数据库操作模块**:xUtils的DBUtils类使得数据库操作变得简单。通过注解,你可以定义实体类与数据库表的映射关系,进而实现ORM(对象...
4. **发送请求**:使用`HttpURLConnection`或第三方库如OkHttp、Apache HttpClient发送POST请求,附带文件数据。 5. **处理响应**:接收到服务器响应后,根据状态码判断上传是否成功,如果有错误信息,可能需要解析...
- HTTP请求:Utils可以封装OkHttp、Volley或Retrofit等网络库,实现GET、POST等请求。 - 数据缓存:处理网络数据的本地缓存,如使用DiskLruCache或SQLite。 - 网络状态检测:检查网络连接是否可用,避免因网络...
工程目录说明: base:基础类库。 exception:异常类模块。 ... ...model:数据模型,实体类定义。...repository:数据仓库,包括网络接口请求数据,sqlite数据库,文件File存储,SharedPreferences数据存储。...utils:工具模块。
Android基于OkHttpUtils网络请求的二次封装是指在Android开发中使用OkHttpUtils库实现网络请求,并对其进行二次封装,以提高代码的可维护性和可读性。这种封装方式可以减少代码量,提高开发效率,并且方便后期更换...