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

工具类——基于原生的okhttp的post请求

2017-03-06 16:49 357 查看
public class OkHttpUtils {
private static final byte[] LOCKER = new byte[0];
private static OkHttpUtils mInstance;
private OkHttpClient mOkHttpClient;
private Handler handler = new Handler(Looper.getMainLooper());

private OkHttpUtils() {
OkHttpClient.Builder ClientBuilder = new OkHttpClient.Builder();
ClientBuilder.readTimeout(15, TimeUnit.SECONDS);//读取超时
ClientBuilder.connectTimeout(20, TimeUnit.SECONDS);//连接超时
ClientBuilder.writeTimeout(20, TimeUnit.SECONDS);//写入超时
mOkHttpClient = ClientBuilder.build();
}

public static OkHttpUtils getInstance() {
if (mInstance == null) {
synchronized (LOCKER) {
if (mInstance == null) {
mInstance = new OkHttpUtils();
}
}
}
return mInstance;
}

public void okhttpPost(String url, RequestBody requestBody, final MyHttpCallback callback) {
if (requestBody == null) {
requestBody = new FormBody.Builder().build();
}
final Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
Call call = mOkHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
onError(callback, e.toString());
}

@Override
public void onResponse(Call call, Response response) throws IOException {
onSuccess(callback, response.body().string());
}
});
}

private void onSuccess(final MyHttpCallback callback, final String data) {
if (null != callback) {
handler.post(new Runnable() {
public void run() {
// 需要在主线程的操作。
callback.onSuccess(data);
}
});
}
}

private void onError(final MyHttpCallback callback, final String msg) {
if (null != callback) {
handler.post(new Runnable() {
public void run() {
// 需要在主线程的操作。
callback.onError(msg);
}
});
}
}

/**
* http请求回调
*
* @author Flyjun
*/
public interface MyHttpCallback {

// 成功回调
void onSuccess(String response);

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