OkHttp 在 Android 中怎么发送异步请求

 我来答
程序员小冰
2016-04-02 · 分享计算机各种操作使用教程等。
程序员小冰
采纳数:19 获赞数:3295

向TA提问 私信TA
展开全部
下面是获取到json字符串。 enqueue就是异步请求的意思。

OkHttpClient mHttpClient = new OkHttpClient();

Request request = new Request.Builder().url(url)
.build();
mHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
//加载失败
}

@Override
public void onResponse(Response response) throws IOException {
//成功获取数据
if (response.isSuccessful()){
String json = response.body().toString();
Log.d("mainai", "onResponse() returned: " + json);

}
}
});
育知同创教育
2016-03-19 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
放到回调函数里面

new Handler(getMainLooper()).post(new Runnable() {
public void run() {
// 需要在主线程的操作。
}
});
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记忆碎片的伤
2016-03-21 · TA获得超过1329个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:158万
展开全部
1首先构造一个Request对象,参数最起码有个url,当然你可以通过Request.Builder设置更多的参数比如:header、method等。
2然后通过request的对象去构造得到一个Call对象,类似于将你的请求封装成了任务,既然是任务,就会有execute()和cancel()等方法。
3最后,我们希望以异步的方式去执行请求,所以我们调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-03-19
展开全部
放到回调函数里面 :
new Handler(getMainLooper()).post(new Runnable() {
public void run() {
// 需要在主线程的操作。
}
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式