`
切切歆语
  • 浏览: 30191 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论

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请求

 

 

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代码-OkHttp3Utils

    OkHttp3.0封装框架,内部使用gson解析json数据 项目地址:https://github.com/open-android/OkHttp3Utils 简书:http://www.jianshu.com/p/e9258c1bc5ce 爱生活,爱学习,更爱做代码的搬运工,分类查找更方便请下载黑马...

    OkHttp请求完美封装(并带工具类)

    MD5、RSA、Base64Utils、DialogUtil、ZXingUtils、GlideUtil、、、工具类 自己总结了一些必备的工具类,可直接放入工程,简单调用 对OkHttp进行了封装,简单调用,便于操作 进行了post、get、文件上传等进行封装

    okhttpMaster

    通过学习和实践这些代码,你将能够熟练掌握OkHttp在实际应用中的使用,提升你的Android开发技能。 总的来说,OkHttp以其高效的性能和简洁的API,成为Android开发中网络请求的首选库。通过GET和POST请求,我们可以...

    okHttp 使用Demo

    本教程将详细介绍 OkHttp 的基本使用方法,以及如何通过 `okhttp-utils-master` 示例项目进行实践操作。 ### 一、OkHttp 特点 1. **连接池**:OkHttp 通过维护一个持久的连接池,可以重用先前建立的 TCP 连接,...

    Android-utils

    - **网络通信**:可能包含HTTP请求工具,如使用OkHttp或Retrofit进行API调用,支持异步请求和响应处理。 - **数据解析**:JSON解析工具,如Gson或Jackson,XML解析如PullParser,帮助处理服务器返回的数据。 - **...

    Android-OkHttp3.0网络工具类

    4. **使用OkHttp3.0封装工具类** - 开发者通常会封装一个OkHttp的工具类,以简化网络请求的调用,提供统一的接口供其他模块使用。封装的内容可能包括设置baseUrl、添加全局Header、处理请求结果等。 - 通过`...

    conquer-utils:Pacote deutilitáriosAPI Conquer

    3. **认证和授权**:对于需要身份验证和权限控制的 API,conquer-utils 可能会提供封装好的认证机制,如 OAuth2、JWT(JSON Web Tokens)或者基本的 HTTP 认证,使得开发者能够更简单地处理这些安全问题。...

    OkHttp Utils OkHttpUtils

    【OkHttp Utils OkHttpUtils】是一个基于Android平台的OkHttp网络请求库的工具类集合,旨在简化使用OkHttp进行网络请求的过程。OkHttp是Square公司开发的一个高效的HTTP客户端,它以其出色的性能、低资源消耗以及对...

    web-sfdc-utils:Java库可调用任何HTTP API以及对SFDC API的特殊支持

    web-sfdc-utils库通过封装这些常见的网络操作,使开发者可以更加专注于业务逻辑,而非底层通信细节。它可能包含了如HttpClient或者OkHttp等流行的HTTP客户端库的抽象和扩展,以便提供一致且易于使用的API。 对于...

    Android-Utils:简单的Android Utils,例如基于RxJava的事件总线

    - **网络请求工具**:可能提供了对OkHttp或Retrofit的封装,简化网络API的调用。 - **图片加载工具**:如使用Glide或Picasso进行图片的加载和缓存处理。 - **数据解析工具**:如使用Gson或Jackson进行JSON数据的...

    android okhttputils案例

    OkHttpUtils是旧版接口,而OkHttp3Utils是基于OkHttp3的新版接口,推荐使用后者。首先,在项目中创建一个工具类,例如命名为`NetworkUtil`,并引入OkHttp3Utils: ```java import ...

    android-utils:一些用于 android 开发的实用工具

    3. **网络通信**:Android开发中经常需要与服务器进行数据交换,工具库可能会提供异步网络请求的封装,如使用OkHttp或Volley库进行HTTP请求,或者处理Gson或Jackson进行数据转换。 4. **权限管理**:随着Android...

    okhttp封装

    在Android开发中,工具类(Utils Class)是程序员经常创建的一种辅助代码结构,用来封装一些通用功能,提高代码复用性和可维护性。本篇主要介绍一个基于张鸿洋(小灰灰)实现的OkHttp封装库,它是一个用于简化网络...

    Android代码-安卓攻城狮必备神器

    okhttp-OkGo OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持RxJava,比Retrofit更简单易用。该库是封装了okhttp的标准RESTful风格的网络框架,支持大文件上传下载,上传进度回调,下载进度回

    OkHttpUtils工具类.java

    通过封装的okthps,就能轻松实现客户端与服务端的

    xUtils-master(xUtils源码)

    源码中,你可以看到它是如何利用OkHttp或者Volley进行网络请求的封装。 2. **数据库操作模块**:xUtils的DBUtils类使得数据库操作变得简单。通过注解,你可以定义实体类与数据库表的映射关系,进而实现ORM(对象...

    上传下载utils

    4. **发送请求**:使用`HttpURLConnection`或第三方库如OkHttp、Apache HttpClient发送POST请求,附带文件数据。 5. **处理响应**:接收到服务器响应后,根据状态码判断上传是否成功,如果有错误信息,可能需要解析...

    安卓开发各种utils

    - HTTP请求:Utils可以封装OkHttp、Volley或Retrofit等网络库,实现GET、POST等请求。 - 数据缓存:处理网络数据的本地缓存,如使用DiskLruCache或SQLite。 - 网络状态检测:检查网络连接是否可用,避免因网络...

    Android整合搭建RxJava+Retrofit+LiveData+OkHttp框架实现MVVM模式开发

    工程目录说明: base:基础类库。 exception:异常类模块。 ... ...model:数据模型,实体类定义。...repository:数据仓库,包括网络接口请求数据,sqlite数据库,文件File存储,SharedPreferences数据存储。...utils:工具模块。

    Android基于OkHttpUtils网络请求的二次封装

    Android基于OkHttpUtils网络请求的二次封装是指在Android开发中使用OkHttpUtils库实现网络请求,并对其进行二次封装,以提高代码的可维护性和可读性。这种封装方式可以减少代码量,提高开发效率,并且方便后期更换...

Global site tag (gtag.js) - Google Analytics