美文网首页
OkHttp 异步请求

OkHttp 异步请求

作者: luckyMannnn | 来源:发表于2018-07-28 17:35 被阅读0次
image.png
app 出错了...? 什么原因呢?我们看下错误信息


image.png
image.png
错误说:只有UI线程才能去更新控件
 txtView.setText(response.body().string ());

也就说明我们这段显示响应信息的代码是在子线程中执行的。从而反应出我们的 new Callback() 回调方法并不是在我们的主线程里,而是在子线程里。

那我们改造下代码,将显示响应信息放在主线程中再去执行。

        //第四步 call对象调用enqueue()方法,通过Callback()回调拿到响应体Response
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                //异步请求失败之后的回调
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //异步请求成功之后的回调
                final String str = response.body().string ();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        txtView.setText(str);
                    }
                });

            }
        });

这样就没有问题了!

注意事项:onResponse() 和 onFailure() 两个回调方法都是在工作线程也就是子线程当中去执行的

这里异步请求就完成了。

相关文章

网友评论

      本文标题:OkHttp 异步请求

      本文链接:https://www.haomeiwen.com/subject/khlomftx.html