okhttp异步请求的超简单封装和使用

今天封装了一下超级简单的OkHttp的异步请求,我也是在学习中,这篇文章算是做个记录,有问题欢迎指出

模拟器能跑 真机报错  应该是UI线程的问题 明天再来弄一下

同步请求的话就比较简单,直接return就可以了,网上例子很多我就不贴代码了,异步耗时操作时,导致先return再获取,从而不能获取到请求的数据,这里针对这个问题给出一个简单的解决方案。

上代码

新建一个类 类名为MyOkHttp
/**
 * @Description OkHttp异步get请求
 * @Author LauHao
 * @Time 2018/1/15 9:57
 */
public static void getRequestAsyn(String url, final ResultCallback callback) {
    OkHttpClient client = new OkHttpClient();
    MyLog.d(TAG, HttpUrl + url);
    final Request request = new Request
            .Builder()
            .url(HttpUrl + url)
            .build();
    Call call = client.newCall(request);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            MyLog.d(TAG, "OkHttp Asyn Get Call Failure");
            callback.onFailure(String.valueOf(e));
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()) {
                MyLog.d(TAG, "Asyn Get Response is Success");
                String result = response.body().string();
                callback.onResponse(result);
            } else {
                MyLog.d(TAG, "Asyn Get Response is Failure");
            }

        }
    });
}
 
接口很简单:
 
public interface ResultCallback {
    void onFailure(String msg);

    void onResponse(String result);
}
在Activity中的使用:
 
MyOkHttp.getRequestAsyn(url, new MyOkHttp.ResultCallback() {
    @Override
    public void onFailure(String msg) {
        MyLog.d(TAG,"Failure info: "+msg);
    }

    @Override
    public void onResponse(String result) {
        jsonParse(result);  //在这写要做的事 result即请求返回的数据
        MyLog.d(TAG,"result"+result);
    }
});
这个排版看起来很奇怪 搞不好 乱了点 凑合看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值