使用功能强大,可以传参(包括json)、传header信息,Cookie的处理,回调函数处理等。先看下调用的代码:
private static final String CONTENT_TYPE = "application/json; charset=utf-8";
public static void login() {
HashMap<String, String> headerMap = new HashMap<>();
HashMap<String, String> paramsMap = new HashMap<>();
headerMap.put("Content-Type", CONTENT_TYPE);//头部信息
paramsMap.put("userName", USER_NAME);//参数
paramsMap.put("password", PASSWORD);
OkhttpUtil.okHttpPost(loginUrl, paramsMap, headerMap, new CallBackUtil.CallBackDefault() {//回调
@Override
public void onFailure(Call call, Exception e) {
LogUtil.e(TAG, e.getMessage());
TVAppUtil.showToast("网络异常!请确认是否联网,以及服务器地址是否正确!");
SharedPreferencesUtil.sharePut("newServerAddress","");
}
@Override
public void onResponse(Response response) {
try {
isLogin = true;
Headers responseHeaders = response.headers();
String c = responseHeaders.get("Set-Cookie");//cookie的处理
TVAppUtil.setCookie(c);
updateReportData();
HandlerUtil.sendTimingRequest();
} catch (Exception e) {
LogUtil.e(TAG, e.getMessage());
TVAppUtil.showToast("登录异常!");
} finally {
try {
response.body().close();
} catch (Exception e) {
}
}
}
});
}
如果参数是json,则调用:
OkhttpUtil.okHttpPostJson(queryWorkerUrl, jsonStr, headerMap, new CallBackUtil.CallBackString() {
@Override
public void onFailure(Call call, Exception e) {
}
@Override
public void onResponse(String response) {
}
});
使用的步骤如下:
1、配置gradle
compile 'com.squareup.okhttp3:okhttp:3.2.0'
2、准备好这三个搭配使用的工具类(从别的博客获得的,不知来源了,如有侵权还请告知!):
OkhttpUtil、CallBackUtil<T>、RequestUtil
3、代码如下
package com.sinotcc.www.zhonghuakaoqintv.util;
import java.io.File;
import java.util.List;
import java.util.Map;
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