最近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<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; }