简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便_第1页
简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便_第2页
简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便_第3页
简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便_第4页
简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

简单的封装了一个简单的封装了一个 OKHttp 网络请求工网络请求工 具类 直接粘贴进去调用使用 很方便 具类 直接粘贴进去调用使用 很方便 首先这个是基于 OKHttp 写的网络请求工具类 所以要导入 okHttp 的一个 jar 包 用 Android Studio 可以导包 或者直接在 build 里面添加一句代码 dependencies compile com squareup okhttp3 logging interceptor 3 4 1 这里有一个注意点 如果是用的 3 0 之前的版本 使用以下直接设置连接超时 读取超时 写入超时 client setConnectTimeout 10 TimeUnit SECONDS client setWriteTimeout 10 TimeUnit SECONDS client setReadTimeout 30 TimeUnit SECONDS 当然 在工具类也有标明和注释 仔细看看就明白了 其实也是为了以后自己省事而已 jar 包直接搜索一下就好 哪里都是 下面 直接上干货 import android os Handler import android os Looper import java io File import java io FileOutputStream import java io IOException import java io InputStream import java util HashMap import java util Map import java util concurrent TimeUnit import okhttp3 Call import okhttp3 Callback import okhttp3 FormBody import okhttp3 OkHttpClient import okhttp3 Request import okhttp3 RequestBody import okhttp3 Response import okhttp3 logging HttpLoggingInterceptor Created by fan on 2016 11 9 public class OkHttp 静态实例 private static OkHttp sOkHttpManager okhttpclient 实例 private OkHttpClient mClient 因为我们请求数据一般都是子线程中请求 在这里我们使用了 handler private Handler mHandler 构造方法 private OkHttp 可以通过实现 Logger 接口更改日志保存位置 HttpLoggingInterceptor loggingInterceptor new HttpLoggingInterceptor loggingInterceptor setLevel HttpLoggingInterceptor Level BODY mClient new OkHttpClient Builder addInterceptor loggingInterceptor build mClient new OkHttpClient 在这里直接设置连接超时 读取超时 写入超时 OkHttpClient Builder builder mClient newBuilder builder connectTimeout 10 TimeUnit SECONDS builder readTimeout 10 TimeUnit SECONDS builder writeTimeout 10 TimeUnit SECONDS builder addInterceptor loggingInterceptor mClient builder build 如果是用的 3 0 之前的版本 使用以下直接设置连接超时 读取超时 写入超时 client setConnectTimeout 10 TimeUnit SECONDS client setWriteTimeout 10 TimeUnit SECONDS client setReadTimeout 30 TimeUnit SECONDS 初始化 handler mHandler new Handler Looper getMainLooper 单例模式 获取 OkHttp 实例 return public static OkHttp getInstance if sOkHttpManager null sOkHttpManager new OkHttp return sOkHttpManager 同步的方式请求数据 对外提供的 get 方法 同步的方式 param url 传入的地址 return public static Response getSync String url 通过获取到的实例来调用内部方法 return sOkHttpManager inner getSync url GET 方式请求的内部逻辑处理方式 同步的方式 param url return private Response inner getSync String url Request request new Request Builder url url build Response response null try 同步请求返回的是 response 对象 response mClient newCall request execute catch IOException e e printStackTrace return response 对外提供的同步获取 String 的方法 param url return public static String getSyncString String url return sOkHttpManager inner getSyncString url 同步方法 private String inner getSyncString String url String result null try 把取得到的结果转为字符串 这里最好用 string result inner getSync url body string catch IOException e e printStackTrace return result 异步的方式请求数据 public static void getAsync String url DataCallBack callBack getInstance inner getAsync url callBack 内部逻辑请求的方法 param url param callBack return private void inner getAsync String url final DataCallBack callBack final Request request new Request Builder url url build mClient newCall request enqueue new Callback Override public void onFailure Call call IOException e deliverDataFailure request e callBack Override public void onResponse Call call Response response throws IOException String result null try result response body string catch IOException e deliverDataFailure request e callBack deliverDataSuccess result callBack 分发失败的时候调用 param request param e param callBack private void deliverDataFailure final Request request final IOException e final DataCallBack callBack 在这里使用异步处理 mHandler post new Runnable Override public void run if callBack null callBack requestFailure request e 分发成功的时候调用 param result param callBack private void deliverDataSuccess final String result final DataCallBack callBack 在这里使用异步线程处理 mHandler post new Runnable Override public void run if callBack null try callBack requestSuccess result catch Etion e e printStackTrace 数据回调接口 public interface DataCallBack void requestFailure Request request IOException e void requestSuccess String result throws Exception 提交表单 public static void postAsync String url Map params DataCallBack callBack getInstance inner postAsync url params callBack private void inner postAsync String url Map params final DataCallBack callBack RequestBody requestBody null if params null params new HashMap 如果是 3 0 之前版本的 构建表单数据是下面的一句 FormEncodingBuilder builder new FormEncodingBuilder 3 0 之后版本 FormBody Builder builder new FormBody Builder 在这对添加的参数进行遍历 map 遍历有四种方式 如果想要了解的可以网上 查找 for Map Entry map params entrySet String key map getKey toString String value null 判断值是否是空的 if map getValue null value else value map getValue 把 key 和 value 添加到 formbody 中 builder add key value requestBody builder build 结果返回 请求对象 final Request request new Request Builder url url post requestBody build mClient newCall request enqueue new Callback Override public void onFailure Call call IOException e deliverDataFailure request e callBack Override public void onResponse Call call Response response throws IOException String result response body string deliverDataSuccess result callBack 文件下载 public static void downloadAsync String url String desDir DataCallBack callBack getInstance inner downloadAsync url desDir callBack 下载文件的内部逻辑处理类 param url 下载地址 param desDir 目标地址 param callBack private void inner downloadAsync final String url final String desDir final DataCallBack callBack final Request request new Request Builder url url build mClient newCall request enqueue new Callback Override public void onFailure Call call IOException e deliverDataFailure request e callBack Override public void onResponse Call call Response response throws IOException 在这里进行文件的下载处理 InputStream inputStream null FileOutputStream fileOutputStream null try 文件名和目标地址 File file new File desDir getFileName url 把请求回来的 response 对象装换为字节流 inputStream

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论