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

对OkHttp进行二次封装

2016-12-13 09:16 323 查看
一个简单的OkHttp的工具类.代码如下.

package com.jinjiang.travel.util;

import android.os.Handler;

import java.io.IOException;

import java.util.Map;

import java.util.concurrent.TimeUnit;

import okhttp3.Call;

import okhttp3.Callback;

import okhttp3.FormBody;

import okhttp3.MediaType;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.RequestBody;

import okhttp3.Response;

/**

* OkHttp的工具类

*/

public class OkHttpUtil {

private static OkHttpClient okHttpClient;
private static Handler handler = new Handler();

public static void initOkHttp() {
okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build();
}

/**
* 下载json
*
* @param url
*/
public static void downJSON(final String url, final OnDownDataListener onDownDataListener) {
Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (onDownDataListener != null) {
onDownDataListener.onFailure(url, e.getMessage());
}
}

@Override
public void onResponse(Call call, final Response response) throws IOException {
final String str = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
if (onDownDataListener != null) {
onDownDataListener.onResponse(url, str);
}
}
});
}
});
}

/**
* 同步get请求 -- 让子类调用
*
* @return
*/
public static Response downResponse(String url) {
Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
try {
return call.execute();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

/**
* post提交表单
*/
public static void postSubmitForm(final String url, Map<String, String> params, final OnDownDataListener onDownDataListener) {
if (params.size() > 0) {
FormBody.Builder builder = new FormBody.Builder();
for (String key : params.keySet()) {
String value = params.get(key);
builder.add(key, value);
}
FormBody formBody = builder.build();

final Request request = new Request.Builder()
.url(url)
.post(formBod
4000
y)
.build();

okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {

}

@Override
public void onResponse(Call call, final Response response) throws IOException {
final String str = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
if (onDownDataListener != null) {
onDownDataListener.onResponse(url, str);
}
}
});
}
});
}
}

/**
* post提交字符串请求
*/
public static void postSubmitString(final String url, String string, final OnDownDataListener onDownDataListener) {
MediaType mediatype = MediaType.parse("text/x-markdown; charset=utf-8");

Request request = new Request.Builder()
.url(url)
.post(RequestBody.create(mediatype, string))
.build();

Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (onDownDataListener != null) {
onDownDataListener.onFailure(url, e.getMessage());
}
}

@Override
public void onResponse(Call call, Response response) throws IOException {
final String str = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
if (onDownDataListener != null) {
onDownDataListener.onResponse(url, str);
}
}
});
}
});
}

public interface OnDownDataListener {
void onResponse(String url, String json);

void onFailure(String url, String error);
}


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