关于android网络请求封装接口回调

来源:互联网 发布:女王级战列舰 知乎 编辑:程序博客网 时间:2024/05/20 22:02

前些天写了个关于android OKHTTP get请求的回调接口,今天与大家共享一下,有不足之处请多指教!不多上代码!

当然我们首先定义一条接口:

<span style="font-size:18px;">/** * Created by TP_HUYE on 2016/9/6. * author:赵先森 * QQ:2691608900 */public interface Httpinfce {    void onResponse(String data);}</span>

         


网络请求及激活接口的工具类


<pre name="code" class="java">   public class OkHttpUtils {    private String result;    Context context;    private static String res;    public void getHttp(String url,Context context) {        context = context;        OkHttpClient client = new OkHttpClient();        Request request = new Request.Builder()                .url(url)                .build();        Call call = client.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Request request, IOException e) {                //请求失败将将传给调用者失败的字符串                result = "失败";<span style="white-space:pre"></span>                handler.sendEmptyMessage(1);            }
            @Override            public void onResponse(Response response) throws IOException {
<span style="white-space:pre"></span>//请求成功,直接将请求成功的值回传给调用者                result = response.body().string();                              handler.sendEmptyMessage(1);            }        });    } private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case 1:
<span style="white-space:pre"></span>//调用接口里的方法传值                    http.onResponse(result);                break;                          }        }     };
    Httpinfce http;     public void openOnFailure(Httpinfce httpinfce){
<span style="white-space:pre"></span>//这是调用者调用时需要传进来一个接口的....        this.http = httpinfce;     }}



//下面就是调用者了


<span style="font-size:18px;">           public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();    } private void initData() {        OkHttpUtils httpUtils = new OkHttpUtils();        httpUtils.openOnFailure(new Httpinfce() {            @Override            public void onResponse(String data) {//介个参数就是您请求返回的值了                urldata = data;                                    if (urldata.equals(TextMark.HTTP_REULST)) {                        //失败//介个是缓存,可直接注释掉                        String pp = SaveDataUtils.getString(MainActivity.this, "home", null);                        handler.sendEmptyMessage(1);                        Log.i("tetee", pp);                    } else {                        //成功                        SaveDataUtils.saveData(MainActivity.this, "home", urldata);                    }                                Log.i("urldata", urldata);            }        });     httpUtils.getHttp("此处是您要请求的接口", MainActivity.this);           }}</span>









0 0