网络请求 框架okhttp

来源:互联网 发布:纱窗淘宝 编辑:程序博客网 时间:2024/05/16 17:06

     在网络请求中,用原始的请求httpconnection请求会有很多要考虑的比如线程,流效率还有字符字节转换,这个时候我们可以使用框架,我们目前需要知道有什么联网的成熟框架,在最近两年中主要有okhttp,还有Retrofit.在总结下get请求很方便,参数直接放网址后面,post参数是通过流的方式传输的。数据格式有两种json和xml,json格式清晰轻便,xml量比较大,更多用json。请求网络类:httpUrlconnection,这个是java.net包提供的,说多了,现在来说下Okhttp。是一个轻量级的框架,看它的使用

一、Okhttp 首先要引入依赖库,当然库比较大,比较占资源open Modlesetting就可以找到了

1.用构建者模式构建一个客户端okhttpclient 的请求,先是new了一个OkhttpClient请求端,再用它生成一个请求

 OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url("http://route.showapi.com/213-4?showapi_appid=48962&topid=5&showapi_sign=9ad486a2461e47f4b3391171911f5b4b").build();
2.客户端去执行请求,客户端new一个call,这个是okhttp的异步请求,请求有一个回调callback。注意这个可以同时多次请求,两个也是可以的,都会通过下面的Callback返回
  okHttpClient.newCall(request).enqueue(callback);
okHttpClient.newCall(request).enqueue(callback);

3.把这个回调写出来,同时在请求成功中可以进行拿到数据Response,但是这个是一个异步请求如果在子线程中修改Ui可能会报错,但是这一次没报错说不清楚,如果报了发个handler把
  Callback callback = new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                  TEX.setText(response.body().string());            }        };

//这个是完整的okhttp异步请求的代码

 public void okhttp() {        OkHttpClient okHttpClient = new OkHttpClient();        Request request = new Request.Builder().url("http://route.showapi.com/213-4?showapi_appid=48962&topid=5&showapi_sign=9ad486a2461e47f4b3391171911f5b4b").build();        Callback callback = new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                  TEX.setText(response.body().string());            }        };//        Request equest=new Request.Builder().url();            okHttpClient.newCall(request).enqueue(callback);    }

原创粉丝点击