OkHttpManager类:
package com.example.demo01;
import android.os.Handler;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
* Created by DELL on 2018/6/6.
*/
public class OkHttpManager {
private final OkHttpClient okHttpClient;
private static Handler handler;
private volatile static OkHttpManager sManager;
//使用构造方法完成初始化
private OkHttpManager(){
okHttpClient = new OkHttpClient();
handler = new Handler();
}
//使用单例模式获取对象
public static OkHttpManager getInstance(){
OkHttpManager instance = null;
if(sManager == null){
synchronized (OkHttpManager.class){
if(instance == null){
instance = new OkHttpManager();
sManager = instance;
}
}
}
return sManager;
}
//定义接口
interface Fun1{
void onResponse(String result);
}
//使用handler、接口保证处理数据的操作在主线程
private static void onSuccessJsonStringMethod(final String JsonValue, final Fun1 callBack){
handler.post(new Runnable() {
@Override
public void run() {
if(callBack != null){
callBack.onResponse(JsonValue);
}
}
});
}
/**
* 暴露提供给外界方法
* 请求指定的url返回的结果是json字符串
*/
public void asyncJsonStringByURL(String url, final Fun1 callBack){
Request request = new Request.Builder().url(url).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response != null && response.isSuccessful()){
onSuccessJsonStringMethod(response.body().string(),callBack);
}
}
});
}
}
MainActivity:
package com.example.ok_demo1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpManager instance = OkHttpManager.getInstance();
instance.asyncJsonStringById("", new OkHttpManager.Fun1() {
@Override
public void onResponse(String result) {
}
});
}
}