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