初步封装OkHttp
来源:互联网 发布:独立域名 编辑:程序博客网 时间:2024/06/03 16:55
知识点 1.单列模式
2.回调
public class OkManager { private OkHttpClient client; private volatile static OkManager manager; private final String TAG = OkManager.class.getSimpleName();//获取当前类名 private Handler handler; //提交json数据 private static final MediaType JSON = MediaType.parse("application/json;charset=utf-8"); //提交字符串 private static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown"); private OkManager() { client = new OkHttpClient(); handler = new Handler(Looper.getMainLooper()); } //使用单例模式????? public static OkManager getInstance() { OkManager instance = null; if (manager == null) { synchronized (OkManager.class) { if (instance == null) { instance = new OkManager(); manager = instance; } } } return manager; } /** * 在android 中不常用 会阻塞UI线程 */ public String syncGetByURL(String url) { //构建一个Request请求 Request request = new Request.Builder().url(url).build(); Response response = null; try { //得到一个response回复 response = client.newCall(request).execute();//同步请求数据 if (response.isSuccessful()) { return response.body().string(); } } catch (IOException e) { e.printStackTrace(); } return null; } /** * 通过指定url 返回json数据 */ public void asyncJsonStringByURL(String url, final Fun1 callBack) { //构建一个Request请求 final Request request = new Request.Builder().url(url).build(); //返回处理是否成功 client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { if (response != null && response.isSuccessful()) { //回调 onSuccessJsonStringMethod(response.body().string(), callBack); } } }); } /** * 请求返回的结果是json字符串 */ private void onSuccessJsonStringMethod(final String jsonValue, final Fun1 callBack) { handler.post(new Runnable() { @Override public void run() { if (callBack != null) { try { callBack.onResponse(jsonValue); } catch (Exception e) { e.printStackTrace(); } } } }); } /** * 返回响应结果是一个json对象 */ private void onSuccessJsonObjectMethod(final String jsonValue, final Fun4 callBack) { handler.post(new Runnable() { @Override public void run() { if (callBack != null) { try { callBack.onResponse(new JSONObject(jsonValue)); } catch (JSONException e) { e.printStackTrace(); } } } }); } /** * 请求返回的是byte[] 数组 */ private void onSuccessByteMethod(final byte[] data, final Fun2 callBack) { handler.post(new Runnable() { @Override public void run() { if (callBack != null) { callBack.onResponse(data); } } }); } //声明回调函数 interface Fun1 { void onResponse(String result); } interface Fun2 { void onResponse(byte[] result); } interface Fun3 { void onResponse(Bitmap result); } interface Fun4 { void onResponse(JSONObject result); }}
0 0
- 初步封装OkHttp
- okhttp封装okhttp-utils
- 封装OKHttp
- 封装OkHttp
- okhttp封装
- 封装OKHttp
- 封装OKHttp
- Okhttp封装
- OkHttp 封装
- OkHttp封装
- OKHttp封装
- Okhttp封装
- okHttp封装
- OkHttp封装
- Okhttp封装
- 封装okhttp
- okhttp封装
- 封装okhttp
- Javascript 知识与经验(二)—— 基本对象类型
- 门描述符
- android-topeka学习笔记(一)-----一些不知道的属性
- ios弹出框
- 差分约束系统
- 初步封装OkHttp
- 优先队列(堆)
- BroadcastReceiver 广播接收者
- OpenGl红皮书第六版阅读笔记p107页实例
- 数的计数
- C语言学习-指针(仅如初见)
- 5. Longest Palindromic Substring
- web访问基础
- Python基础--运算符