关于自己对okhttp的理解-----get请求异步用法

来源:互联网 发布:233什么意思网络用语 编辑:程序博客网 时间:2024/04/28 15:08

get请求异步

第一步获取Request对象;第二步获取将reques请求对象加入请求队列:call对象enqueue提供了异步访问方法,而execute则是同步方法;第三步实现回调。



具体代码如下

package com.example.administrator.testokhttp;import android.util.Log;import java.io.IOException;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;/** * Created by Zhaoqingzhi on 2017/2/16. */public class OkhttpUtils {    private static final OkHttpClient okhttpclient=new OkHttpClient();    /**     * 获取请求对象request     * @param url     * @return     */    private static Request getRequestFromUrl(String url){        Request request=new Request.Builder().url(url).build();        return request;    }       /**     * 开启异步线程,通过回调方法获取数据     * @param url     * @param callback     */    public static void  loadData(String url, Callback callback){        Request request=getRequestFromUrl(url);        okhttpclient.newCall(request).enqueue(callback);    }}

在activity中调用:

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        OkhttpUtils.loadData("url", new Callback() {            @Override            public void onFailure(Call call, IOException e) {               
           Message msg=new Message();                    msg.what=0;                    handler.sendMessage(msg);
} @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ str= response.body().string(); //注意这里不是主线程 Log.e("tag==:",str+""); Message msg=new Message(); msg.what=1; handler.sendMessage(msg); } } } ); }

0 0
原创粉丝点击