OKHtt自己封装
来源:互联网 发布:九仙图仙羽进阶数据 编辑:程序博客网 时间:2024/05/21 08:36
OKHttpUtils
package com.bwie.okhttp;import android.os.Handler;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;public class OkHttpUtils { private Handler handler = new Handler(); public Handler getHandler(){ return handler; } //单例 private static OkHttpUtils okHttpUtils = new OkHttpUtils(); private OkHttpUtils(){}; public static OkHttpUtils getInstance(){ return okHttpUtils; } private OkHttpClient client; private void initOKHttpClient(){ if(client==null){ client = new OkHttpClient.Builder().build(); } } //公用的get请求方法 完成的功能不确定 public void doGet(String url, Callback callback){ initOKHttpClient(); Request request = new Request.Builder().url(url).build(); Call call = client.newCall(request); call.enqueue(callback); }}
OkHttpCallback
import android.os.Handler;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;public abstract class OnUiCallback implements Callback{ Handler handler = OkHttpUtils.getInstance().getHandler(); public abstract void onFailed(Call call,IOException e); public abstract void onSuccess(String result)throws IOException; @Override public void onFailure(final Call call, final IOException e) { //该方式 存在问题,网络请求也跑到了主线程 待解决 //该方法就是把线程post到handler所在的线程 handler.post(new Runnable() { @Override public void run() { onFailed(call,e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String result = response.body().string(); //该方式 存在问题 网络请求也跑到了主线程 待解决 handler.post(new Runnable() { @Override public void run() { try { onSuccess(result); } catch (IOException e) { e.printStackTrace(); } } }); }}
MainActivity
package com.bwie.okhttp;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.TextView;import java.io.IOException;import okhttp3.Call;public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); OkHttpUtils.getInstance().doGet("http://www.baidu.com", new OnUiCallback() { @Override public void onFailed(Call call, IOException e) { } @Override public void onSuccess(String result) throws IOException { Log.i("====","onResponse:"+result); tv.setText(result); } }); } private void initView() { tv = (TextView) findViewById(R.id.tv); }}
阅读全文
0 0
- OKHtt自己封装
- Okhtt异步解析
- 自己封装socket
- 自己封装的ajax
- 自己封装的泛型链表
- 自己封装Ajax类
- 自己封装SQLHelper
- 自己常用方法封装
- 封装自己的Framwork
- 封装自己的理解
- 自己封装ajax,json.
- js自己封装方法
- 自己代码封装
- 自己封装的ajax
- iOS自己封装控件
- Arduino自己封装库
- 自己封装ajax
- 自己封装String类
- 小朋友学C语言(23):二进制与十进制之间的转换
- 1861: [Zjoi2006]Book 书架
- 小朋友学C语言(24):位运算符
- 我的CSDN博客开通啦
- [队内测试Day10.24Final]逆序对+表达式计算+贪心+图论+数论?
- OKHtt自己封装
- 小朋友学C语言(25):两数交换
- java_se 内部类-成员内部类
- 调用系统相机
- 小朋友学C语言(26):冒泡排序
- 《python核心编程第二版》第六章 习题补充
- 第八周项目实践2 建立连串算法库
- The difference between Go and C-like language
- 小朋友学C语言(27):选择排序