public class OkHttpUtils {
private static final int HTTP_FAIL = 1001;//失敗
private static final int HTTP_SUCCESS = 1000;//成功
// private Context context;
//
// public OkHttpUtils(Context context) {
// this.context = context;
// }
//get請求
public OkHttpUtils get(String url) {
doHttp(0, url, null);
return this;
}
//post請求
public OkHttpUtils post(String url, FormBody.Builder builder) {
doHttp(1, url, builder);
return this;
}
//put請求
public OkHttpUtils put(String url, FormBody.Builder builder) {
doHttp(2, url, builder);
return this;
}
//delete請求
public OkHttpUtils delete(String url, FormBody.Builder builder) {
doHttp(3, url, builder);
return this;
}
//傳遞頭參
private Map<String, String> headMap = new HashMap<>();
public OkHttpUtils setHead(Map<String, String> headMap) {
this.headMap = headMap;
return this;
}
//執行網絡請求
private void doHttp(int i, String url, FormBody.Builder builder) {
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
//攔截器添加頭參
Request request = chain.request();
// Request.Builder builder1= request.newBuilder();
// Set<Map.Entry<String, String>> setHead = headMap.entrySet();
// for (Map.Entry<String, String> head:setHead) {
// String key=head.getKey();
// String value=head.getValue();
// builder1.addHeader(key,value);
// }
return chain.proceed(request);
}
}).build();
Request.Builder builder1 = new Request.Builder();
if (i == 0) {
builder1.get();
} else if (i == 1) {
builder1.post(builder.build());
} else if (i == 2) {
builder1.put(builder.build());
} else if (i == 3) {
builder1.delete(builder.build());
}
//添加頭參
Set<Map.Entry<String, String>> setHead = headMap.entrySet();
for (Map.Entry<String, String> head : setHead) {
String key = head.getKey();
String value = head.getValue();
builder1.addHeader(key, value);
}
//把你保存好的userid 和seessionId 取出來
// SharedPreferences sp=context.getSharedPreferences("name",0);
// String userId=sp.getString("userid","");
// String sessionid=sp.getString("sessionid","");
//
// builder1.addHeader("userid",userId);
// builder1.addHeader("sessionid",sessionid);
builder1.url(url);
final Message message = Message.obtain();
client.newCall(builder1.build()).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
message.what = HTTP_FAIL;
message.obj = e.getMessage();
handler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
message.what = HTTP_SUCCESS;
message.obj = response.body().string();
handler.sendMessage(message);
}
});
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == HTTP_SUCCESS) {//成功
String data = (String) msg.obj;
try {
mHttpListener.success(data);
} catch (JSONException e) {
e.printStackTrace();
}
} else {
//失敗
String error = (String) msg.obj;
mHttpListener.fail(error);
}
}
};
//傳遞接口
private HttpListener mHttpListener;
public void result(HttpListener mHttpListener) {
this.mHttpListener = mHttpListener;
}
public interface HttpListener {
void success(String data) throws JSONException;
void fail(String error);
}
}
簡單的OkHttp封裝類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.