okHttp的使用

来源:互联网 发布:淘宝卖家后台官网 编辑:程序博客网 时间:2024/06/05 10:01

okHttp的使用

优势

  • 谷歌官方在6.0以后在android sdk已经移除了httpClient,加入我们okHttp
  • 支持SPDY,允许连接同一主机的所有请求分享一个socket。 如果SPDY不可用,会使用连接池减少请求延迟。 使用GZIP压缩下载内容,且压缩操作对用户是透明的。 利用响应缓存来避免重复的网络请求。 当网络出现问题的时候,OKHttp会依然有效,它将从常见的连接问题当中恢复。 如果你的服务端有多个IP地址,当第一个地址连接失败时,OKHttp会尝试连接其他的地址,这对IPV4和IPV6以及寄宿在多个数据中心的服务而言,是非常有必要的。
    因此使用 OkHttp 作为替代是好的选择.

SPDY

SPDY(读作“SPeeDY”)是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强

如何用

依赖方式

gradle中加入`compile 'com.squareup.okhttp:okhttp:2.6.0'`即可

离线的方式

通过maven仓库搜索下载okhttp.jar和okio.jar使用

get请求

同步的请求

//1.创建OkHttpClient实例对象        OkHttpClient okHttpClient = new OkHttpClient();//home// ?index=0==>参数String url = Constants.URLS.BASEURL + "home?index=0";//2.创建一个请求Request request = new Request.Builder()        .get()//get方法        .url(url)//对应的url        .build();//3.发起请求Response response = okHttpClient.newCall(request).execute();//4.取出结果String resultJsonString = response.body().string();

异步的请求

//1.创建OkHttpClient实例对象        OkHttpClient okHttpClient = new OkHttpClient();        //home        // ?index=0==>参数        String url = Constants.URLS.BASEURL + "home?index=0";        //2.创建一个请求        Request request = new Request.Builder()                .get()//get方法                .url(url)//对应的url                .build();//3.发起请求okHttpClient.newCall(request).enqueue(new Callback() {    @Override    public void onFailure(Request request, IOException e) {        //请求成功    }    @Override    public void onResponse(Response response) throws IOException {        //请求失败    }});

参数的拼接

public static String getUrlParamsByMap(Map<String, Object> map) {    if (map == null) {        return "";    }    StringBuffer sb = new StringBuffer();    for (Map.Entry<String, Object> entry : map.entrySet()) {        sb.append(entry.getKey() + "=" + entry.getValue());        sb.append("&");    }    String s = sb.toString();    if (s.endsWith("&")) {        s = s.substring(0, s.length() - 1);    }    return s;}
原创粉丝点击