1、导入OKhttp依赖

compile 'com.squareup.okhttp3:okhttp:3.4.1'

2、创建请求工具类

三个工具类

/*** 作者:created by meixi* 邮箱:15913707499@163.com* 日期:2019/4/10 15*/public class OkhttpUtil {public static final String METHOD_GET = "GET";public static final String METHOD_POST = "POST";public static final String METHOD_PUT = "PUT";public static final String METHOD_DELETE = "DELETE";public static final String FILE_TYPE_FILE = "file/*";public static final String FILE_TYPE_IMAGE = "image/*";public static final String FILE_TYPE_AUDIO = "audio/*";public static final String FILE_TYPE_VIDEO = "video/*";/*** get请求* @param url:url* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpGet(String url, CallBackUtil callBack) {okHttpGet(url, null, null, callBack);}/*** get请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpGet(String url, Map<String, String> paramsMap, CallBackUtil callBack) {okHttpGet(url, paramsMap, null, callBack);}/*** get请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpGet(String url, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_GET, url, paramsMap, headerMap, callBack).execute();}/*** post请求* @param url:url* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPost(String url, CallBackUtil callBack) {okHttpPost(url, null, callBack);}/*** post请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPost(String url, Map<String, String> paramsMap, CallBackUtil callBack) {okHttpPost(url, paramsMap, null, callBack);}/*** post请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPost(String url, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_POST, url, paramsMap, headerMap, callBack).execute();}/*** post请求* @param url:url* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPut(String url, CallBackUtil callBack) {okHttpPut(url, null, callBack);}/*** post请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPut(String url, Map<String, String> paramsMap, CallBackUtil callBack) {okHttpPut(url, paramsMap, null, callBack);}/*** post请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPut(String url, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_PUT, url, paramsMap, headerMap, callBack).execute();}/*** post请求* @param url:url* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpDelete(String url, CallBackUtil callBack) {okHttpDelete(url, null, callBack);}/*** post请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpDelete(String url, Map<String, String> paramsMap, CallBackUtil callBack) {okHttpDelete(url, paramsMap, null, callBack);}/*** post请求,可以传递参数* @param url:url* @param paramsMap:map集合,封装键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpDelete(String url, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_DELETE, url, paramsMap, headerMap, callBack).execute();}/*** post请求,可以传递参数* @param url:url* @param jsonStr:json格式的键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPostJson(String url, String jsonStr, CallBackUtil callBack) {okHttpPostJson(url, jsonStr, null, callBack);}/*** post请求,可以传递参数* @param url:url* @param jsonStr:json格式的键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpPostJson(String url, String jsonStr, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_POST, url, jsonStr, headerMap, callBack).execute();}/*** post请求,上传单个文件* @param url:url* @param file:File对象* @param fileKey:上传参数时file对应的键* @param fileType:File类型,是image,video,audio,file* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。还可以重写onProgress方法,得到上传进度*/public static void okHttpUploadFile(String url, File file, String fileKey, String fileType, CallBackUtil callBack) {okHttpUploadFile(url, file, fileKey,fileType, null, callBack);}/*** post请求,上传单个文件* @param url:url* @param file:File对象* @param fileKey:上传参数时file对应的键* @param fileType:File类型,是image,video,audio,file* @param paramsMap:map集合,封装键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。还可以重写onProgress方法,得到上传进度*/public static void okHttpUploadFile(String url, File file, String fileKey,String fileType, Map<String, String> paramsMap, CallBackUtil callBack) {okHttpUploadFile(url, file,fileKey, fileType, paramsMap, null, callBack);}/*** post请求,上传单个文件* @param url:url* @param file:File对象* @param fileKey:上传参数时file对应的键* @param fileType:File类型,是image,video,audio,file* @param paramsMap:map集合,封装键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。还可以重写onProgress方法,得到上传进度*/public static void okHttpUploadFile(String url, File file, String fileKey,String fileType, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_POST, url,paramsMap, file, fileKey,fileType,  headerMap, callBack).execute();}/*** post请求,上传多个文件,以list集合的形式* @param url:url* @param fileList:集合元素是File对象* @param fileKey:上传参数时fileList对应的键* @param fileType:File类型,是image,video,audio,file* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpUploadListFile(String url, List<File> fileList, String fileKey, String fileType, CallBackUtil callBack) {okHttpUploadListFile(url,null, fileList, fileKey, fileType, callBack);}/*** post请求,上传多个文件,以list集合的形式* @param url:url* @param fileList:集合元素是File对象* @param fileKey:上传参数时fileList对应的键* @param fileType:File类型,是image,video,audio,file* @param paramsMap:map集合,封装键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpUploadListFile(String url, Map<String, String> paramsMap,List<File> fileList, String fileKey, String fileType,  CallBackUtil callBack) {okHttpUploadListFile(url, paramsMap,fileList, fileKey, fileType, null, callBack);}/*** post请求,上传多个文件,以list集合的形式* @param url:url* @param fileList:集合元素是File对象* @param fileKey:上传参数时fileList对应的键* @param fileType:File类型,是image,video,audio,file* @param paramsMap:map集合,封装键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpUploadListFile(String url, Map<String, String> paramsMap, List<File> fileList, String fileKey, String fileType, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_POST, url,  paramsMap,fileList, fileKey, fileType, headerMap, callBack).execute();}/*** post请求,上传多个文件,以map集合的形式* @param url:url* @param fileMap:集合key是File对象对应的键,集合value是File对象* @param fileType:File类型,是image,video,audio,file* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpUploadMapFile(String url, Map<String, File> fileMap, String fileType, CallBackUtil callBack) {okHttpUploadMapFile(url, fileMap, fileType, null, callBack);}/*** post请求,上传多个文件,以map集合的形式* @param url:url* @param fileMap:集合key是File对象对应的键,集合value是File对象* @param fileType:File类型,是image,video,audio,file* @param paramsMap:map集合,封装键值对参数* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpUploadMapFile(String url, Map<String, File> fileMap, String fileType, Map<String, String> paramsMap, CallBackUtil callBack) {okHttpUploadMapFile(url, fileMap, fileType, paramsMap, null, callBack);}/*** post请求,上传多个文件,以map集合的形式* @param url:url* @param fileMap:集合key是File对象对应的键,集合value是File对象* @param fileType:File类型,是image,video,audio,file* @param paramsMap:map集合,封装键值对参数* @param headerMap:map集合,封装请求头键值对* @param callBack:回调接口,onFailure方法在请求失败时调用,onResponse方法在请求成功后调用,这两个方法都执行在UI线程。*/public static void okHttpUploadMapFile(String url, Map<String, File> fileMap, String fileType, Map<String, String> paramsMap, Map<String, String> headerMap, CallBackUtil callBack) {new RequestUtil(METHOD_POST, url,paramsMap, fileMap, fileType,  headerMap, callBack).execute();}/*** 下载文件,不带参数*/public static void okHttpDownloadFile(String url,CallBackUtil.CallBackFile callBack) {okHttpDownloadFile(url,null,callBack);}/*** 下载文件,带参数*/public static void okHttpDownloadFile(String url,Map<String, String> paramsMap,  CallBackUtil.CallBackFile callBack) {okHttpGet(url, paramsMap, null, callBack);}/*** 加载图片*/public static void okHttpGetBitmap(String url, CallBackUtil.CallBackBitmap callBack) {okHttpGetBitmap(url, null, callBack);}/*** 加载图片,带参数*/public static void okHttpGetBitmap(String url,Map<String, String> paramsMap,  CallBackUtil.CallBackBitmap callBack) {okHttpGet(url, paramsMap, null, callBack);}}

3、请求结果

    

设置超时

/*** 设置连接超时时间*/
public final static int CONNECT_TIMEOUT = 60;
/*** 设置读取超时时间*/
public final static int READ_TIMEOUT = 100;
/*** 设置写的超时时间*/
public final static int WRITE_TIMEOUT = 60;
private OkHttpClient mOkHttpClient;//OKhttpClient对象
mOkHttpClient = new OkHttpClient.Builder().connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)//设置连接超时时间.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS)//设置读取超时时间.writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS)//设置写的超时时间.build();

2、okgo使用实例——非常简洁

public APIClient apiClient = APIClient.getApiClient();
/*** 1,校验&添加设备* 设备不存在-添加并返回成功  设备存在-返回成功*/
private void addOrCheck() {apiClient.post(new APIParams.Builder().pathUrl(Urls.ADDORCHECK).param("deviceNo", App.mDevID).callback(new AbsAPICallback<AddOrCheckBean>() {@Overrideprotected void onSuccess(String subCode, String msg, AddOrCheckBean data) {LogPlus.e("校验或添加成功  cabinetNum = " + data.cabinetNum);App.mGridNum = data.cabinetNum;queryDevInfo();}}).build());}

返回结果

APIParams    APIClient
public Map getParamsMap(){return paramMap;
}
.params(params.getParamsMap(), false)
private static Gson mGSon;
public static String parseObjToJsonStr(Object srcObj) {String result = "";if (mGSon == null) {mGSon = new GsonBuilder().disableHtmlEscaping().create();}try {result = mGSon.toJson(srcObj);} catch (Exception e) {Log.getStackTraceString(e);}return result;
}
APIResponseCallback
 params.callback.onSuccess(response.body().code, responseInfo, null);

demo云盘链接: https://pan.baidu.com/s/17PBWTHAGjkn5P4dHFxBW5g

密码在线回复:QQ1085220040

OKhttpdemo链接:https://download.csdn.net/download/meixi_android/11103267

okgo使用demo:https://download.csdn.net/download/meixi_android/12709690

Android okhttp3使用实例,OKhttp设置请求超时时间,okgo使用demo相关推荐

  1. Linux下CURL设置请求超时时间

    使用CURL时,有两个超时时间:一个是连接超时时间,另一个是数据传输的最大允许时间. 连接超时时间用--connect-timeout参数来指定,数据传输的最大允许时间用-m参数来指定. 例如: cu ...

  2. Android Okhttp3 (二) 二次封装请求管理类

    okHttp介绍 通过上面的对比说明,让你不得不做出明智的选择,OkHttp是一个相对成 官网地址:http://square.github.io/okhttp/ 官方API地址:http://m.b ...

  3. http 请求 超时时间设置

    HttpParams params = new BasicHttpParams(); //设置连接超时时间 Integer CONNECTION_TIMEOUT = 2 * 1000; //设置请求超 ...

  4. HttpClient设置请求超时

    前言 最近,我无疑间看到同事提交到git上的httpclient调用第三方服务设置超时代码,发现有趣的一件事.项目中引用的httpclient版本是4.4.5版本,结果同事为了设置超时,在项目的pom ...

  5. java session时间_java session时长问题,java设置session超时时间实例

    java session超时设置你知道应该如何设置吗?下面要给大家带来的实例就是和java设置session超时时间相关的内容,一起来看看具体实现方式吧. 一般的系统登陆了之后,都会有设置一个当前的s ...

  6. 微信小程序设置请求超时wx.request等,简单易懂!

    微信小程序设置请求超时wx.request等 一.用到的方法: 个人理解,比较粗糙 看不懂可以百度一下具体用法 new Promise:new了一个函数或者方法,可以被Promise.race等方法调 ...

  7. springboot设置请求超时

    首先超时不只一种,是接口超时,还是restTemplate超时. 接口超时: 别人访问该项目 restTemplate(或httpClient)超时: 该项目请求其他地址 restTemplate超时 ...

  8. 熟练掌握如何设置空闲超时时间.

    熟练掌握如何设置空闲超时时间.   配置实例一: Aiko(config)#exit Aiko# *Mar 1 00:20:11.231: %SYS-5-CONFIG_I: Configured fr ...

  9. java 微信请求超时_java – SQL服务器“超出锁定请求超时时间”..再次

    我在尝试扩展sql server SP中的锁定超时时遇到问题.无论我尝试什么,它都会继续投掷"锁定请求超时时间超出". 我正在使用 java jtds 1.2.2,c3p0 0.9 ...

最新文章

  1. 33 篇顶会论文如何做到?北大施柏鑫:计算机视觉论文投稿到接收,不可不知的关键环节...
  2. 安装 MySQL-python 出错 ImportError: No module named 'ConfigParser'
  3. BZOJ 2157: 旅游
  4. asp.net控件开发基础(2)
  5. [react] React的render中可以写{if else}这样的判断吗?
  6. 大数据之-Hadoop3.x_MapReduce_官方WordCount源码和序列化类型---大数据之hadoop3.x工作笔记0085
  7. 建立RHELAS4下面的Yum本地源
  8. [转]使用 HTML5 索引型数据库的待办事项简要列表
  9. 七、深度学习中的正则化
  10. 游戏开发如此简单?我直接创建了一个游戏场景【python 游戏实战 02】
  11. 2021亚太杯数学建模C题全网成品论文+代码+详细思路+数据+参考文献
  12. iOS经典讲解之Socket使用教程
  13. 代码要写注释吗?写你就输了
  14. java 正则用法_Java正则用法
  15. 2017服务器cpu性能排行,桌面CPU性能排行榜单 CPU天梯图2017年6月最新版
  16. h5与原生app交互的原理
  17. 外部中断----高低电平触发,(边沿触发)上升沿触发和下降沿触发区别
  18. 如何安装成英文版本的vmware
  19. 基于java的人力资源管理系统_基于JavaWeb的企业人力资源管理系统的设计与实现...
  20. 【VBA】使用ReadTXT功能,读取巨大文件的加速方法

热门文章

  1. [html] 实现两列等宽布局的方式有哪些?
  2. [css] 你有用过clip-path吗?说说你对它的理解和它都有哪些运用场景?
  3. 工作184:自定义事件
  4. 前端学习(2441):删除处理完成
  5. 前端学习(2364):图片的上传
  6. 前端学习(2233):react的子传父数据传递
  7. 前端学习(1867)vue之电商管理系统电商系统之登录退出实现表单的重置
  8. 前端学习(1679):前端系列实战课程之为蛇创建食物对象
  9. shiro学习(13):springMVC结合shiro完成认证
  10. mybatis学习(23):分页1 多参数传递(索引方式)