okHttp使用及其优势

最近okhttp网络请求比较火 ,本人在工作之余也了解一下okhttp的特点及用法,希望对大家有用.

第一点:谷歌官方在6.0以后在android sdk已经移除了httpClient,加入我们okHttp.
第二点:okHttp支持SPDY(是谷歌开发的基于TCP的应用层协议,用于最小化网络延迟,提升网络速度,优化用户的网络使用体验. SPDY并不是一种替代http的协议,只是对http的一种增强.)允许连接在一主机的所有请求分享一个socket.如果SPDY不可用.会使用连接池来减少请求延迟.利用响应缓存来避免重复的网络请求.即便是网络出现问题时,okhttp依然起作用.它将从常见的链接问题当中回复.如果你的服务器有多个IP地址,当地一个失败时,okhttp会自动尝试连接其他的地址.这对于IPV4和IPV6以及寄宿在多个数据中心的服务而言,是非常有必要的,所以okhttp的稳定性可以说是非常棒的.第一点:谷歌官方在6.0以后在android 打开已经移除了httpClient 加入了okHttp.


第三点:使用方式:

1.离线方式:

2. 添加依赖的方式;


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

2. gradle中加入`compile 'com.squareup.okhttp:okhttp:2.6.0'`即可
最常使用的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 map) {
    if (map == null) {
        return "";
    }
    StringBuffer sb = new StringBuffer();
    for (Map.Entry 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;
}


你可能感兴趣的:(java技术,开发语言/框架,Android)