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);
}
}
工具类——基于原生的okhttp的post请求
最新推荐文章于 2025-04-23 14:37:23 发布