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

OKHttp网络请求封装好的框架

2016-11-18 11:03 295 查看
用法很简单直接调用(url,参数,new callback)

/**
* Created by Administrator on 2016/7/10 0010.
*/
public class OKHttpUtils {
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");

/**
* 回调接口便于修改框架
*
* @param <T>
*/
public interface
RequestCallBack<T> {
void onSuccess(T result);

void onFailure(String error);
}

private static OkHttpClient client = new OkHttpClient();
private static Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 1) {
((RequestCallBack) msg.obj).onSuccess(msg.getData().getString("data"));
} else {
((RequestCallBack) msg.obj).onFailure(msg.getData().getString("error"));
}
}
};

/**
* get请求
*/
public static String get(String url, final RequestCallBack requestCallBack) {
Request request = new Request.Builder()
.url(url)
.addHeader("api-key", "j=pp=ytGv6nso1uJMYa37ouT=kk=")
.get()
.cacheControl(CacheControl.FORCE_NETWORK)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
if (requestCallBack != null) {
Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("error", e.getMessage());
message.setData(bundle);
message.what = 0;
message.obj = requestCallBack;
handler.sendMessage(message);
}
}

@Override
public void onResponse(Response response) {
if (requestCallBack != null) {
String s = "";
try {
s = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("data", s);
message.setData(bundle);
message.what = 1;
message.obj = requestCallBack;
handler.sendMessage(message);
}
}
});
return url;
}

/**
* post无参请求
*/
public static void post(String url, final RequestCallBack requestCallBack) {
Request request = new Request.Builder()
.url(url)
.addHeader("api-key", "j=pp=ytGv6nso1uJMYa37ouT=kk=")
.cacheControl(CacheControl.FORCE_NETWORK)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
if (requestCallBack != null) {
Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("error", e.getMessage());
message.setData(bundle);
message.what = 0;
message.obj = requestCallBack;
handler.sendMessage(message);
}
}

@Override
public void onResponse(Response response) {
if (requestCallBack != null) {
String s = "";
try {
s = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("data", s);
message.setData(bundle);
message.what = 1;
message.obj = requestCallBack;
handler.sendMessage(message);
}
}
});
}

/**
* post 请求
*
* @param url
* @param requestJson
* @param requestCallBack
*/
public static void post(String url, JSONObject requestJson, final RequestCallBack requestCallBack) {
RequestBody body = RequestBody.create(JSON, requestJson.toString());

Request request = new Request.Builder()
.url(url)
.addHeader("api-key", "j=pp=ytGv6nso1uJMYa37ouT=kk=")
.post(body)
.cacheControl(CacheControl.FORCE_NETWORK)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
if (requestCallBack != null) {
Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("error", e.getMessage());
message.setData(bundle);
message.what = 0;
message.obj = requestCallBack;
handler.sendMessage(message);
}
}

@Override
public void onResponse(Response response) {
if (requestCallBack != null) {
String s = "";
try {
s = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("data", s);
message.setData(bundle);
message.what = 1;
message.obj = requestCallBack;
handler.sendMessage(message);
}
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: