您的位置:首页 > 理论基础 > 计算机网络

OkHttp工具类简单封装运用

2017-09-21 20:09 337 查看
简单的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) {

}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: