简单的OK封装运用
如需别的功能 ,请另寻他处
导入依赖:
compile 'com.google.code.gson:gson:2.8.1'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
//OkHttp工具类
private static ReentrantLock lock = new ReentrantLock();
private static volatile HttpUtils httpUtils;
private final OkHttpClient okHttpClient;
private Handler handler = new Handler(Looper.getMainLooper());
private static HashMap<String,String> headers = new HashMap<>();
static{
headers.put("client_type","android");
}
private HttpUtils() {
okHttpClient = new OkHttpClient();
}
public static HttpUtils getInstance() {
if (httpUtils == null) {
lock.lock();
try {
if (httpUtils == null) {
httpUtils = new HttpUtils();
}
} finally {
lock.unlock();
}
}
return httpUtils;
}
public void doPost(String url, HashMap<String, String> params, final Class clazz, final OnNetListener onNetListener) {
FormBody.Builder builder = new FormBody.Builder();
// for (Map.Entry<String, String> entry : params.entrySet()) {
// builder.add(entry.getKey(), entry.getValue());
// }
// RequestBody formBody = builder.build();
Request request = new Request.Builder()
.url(url)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
if (onNetListener!=null){
onNetListener.onError(e);
}
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
handler.post(new Runnable() {
@Override
public void run() {
if (onNetListener!=null){
// onNetListener.onSuccess(response);
try {
BaseBeen baseBena = (BaseBeen) new Gson().fromJson(response.body().string(), clazz);
if (baseBena.getCode()==200){
onNetListener.onSuccess(baseBena);
}else if(baseBena.getCode()==300){
//做相应的操作
}
} catch (IOException e) {
}
}
}
});
}
});
}
/**
* GET 请求
*
* @param url
* @param headerMap
* @param onNetListener
*/
public void doGet(String url, HashMap<String, String> headerMap, final OnNetListener onNetListener) {
if (headerMap == null || headerMap.size() == 0) {
throw new RuntimeException("headerMap is null !!!!");
}
Request.Builder builder = new Request.Builder();
builder.url(url);
headers.putAll(headerMap);
for (Map.Entry<String, String> entry : headers.entrySet()) {
builder.addHeader(entry.getKey(), entry.getValue());
}
Request request = builder.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
onNetListener.onError(e);
}
});
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
//默认返回结果在子线程当中
handler.post(new Runnable() {
@Override
public void run() {
onNetListener.onSuccess(response);
}
});
}
});
}
创建接口
public interface OnNetListener { public void onSuccess(Response response); public void onSuccess(BaseBeen baseBean); public void onError(IOException e); }
MainActivity运用
HttpUtils.getInstance().doPost(url, null, BaseBeen.class, new OnNetListener() {
@Override
public void onSuccess(Response response) {
}
@Override
public void onSuccess(BaseBeen baseBean) {
}
@Override
public void onError(IOException e) {
}
});