okhttp简单封装
来源:互联网 发布:淘宝搜白夜追凶视频 编辑:程序博客网 时间:2024/06/18 04:21
package com.baway.eventbusdemo.net;
import android.os.Handler;
import android.os.Looper;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* Created by peng on 2017/9/21.
*/
public class HttpUtils {
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)
.post(formBody)
.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 {
BaseBean baseBena = (BaseBean) new Gson().fromJson(response.body().string(), clazz);
if (baseBena.getCode().equals("200")){
onNetListener.onSuccess(baseBena);
}else if(baseBena.getCode().equals("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);
}
});
}
});
}
}
import android.os.Handler;
import android.os.Looper;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* Created by peng on 2017/9/21.
*/
public class HttpUtils {
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)
.post(formBody)
.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 {
BaseBean baseBena = (BaseBean) new Gson().fromJson(response.body().string(), clazz);
if (baseBena.getCode().equals("200")){
onNetListener.onSuccess(baseBena);
}else if(baseBena.getCode().equals("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);
}
});
}
});
}
}
阅读全文
0 0
- okhttp的简单封装
- OkHTTp简单封装
- okHttp简单封装使用
- OkHttp简单封装
- OkHttp的简单封装
- 简单封装okhttp
- okhttp的简单封装
- okhttp简单封装
- 简单的封装okhttp
- OkHttp简单功能封装
- OkHttp简单封装
- OKhttp简单封装
- OKHTTP的简单封装
- 非常简单封装Okhttp
- okhttp简单封装
- okhttp的简单封装
- okhttp简单封装+使用
- 简单的okhttp封装
- Android开发--常见的四种线程池
- Redis性能问题排查解决手册(七)
- 9月英语学习总结
- 打印当前时间。学习使用Date类和Calendar类
- iOS 更改状态栏、导航栏颜色的几种方法
- okhttp简单封装
- 大数据测试方法
- 原创文章test
- sqlserver游标使用
- 没啥事用C语言写一个Trie tree玩玩,支持中英文,用g++编译通过
- czl蒻蒟的OI之路14、15
- Laravel 调用 个推 对Android和IOS进行推送
- Linux新用户没有sudo权限
- python进程池的使用