Android你必须学会的okhttp3.0入门篇简单说一下学习okhttp的理由1.google在Android6.0中删除了HttpClient的Api,采用的是则是okhttp2.高效的使用HTTP,使应用运行更快更省流量3.响应缓存数据避免重复网络请求4.无缝的支持GZIP来减少数据流量5.使用非常简单,请求和响应的Api具有流畅的建造和不变性,同时支持同步异步调用回调函数6.如果网络出现问题,它会从常见的连接问题中恢复7.如果服务器配置有多个IP地址,当第一个IP连接失败,它会尝试连接下一个IP以上是okhttp官网以及结合网上的一些理解整理出来的,看到有不对的地方还望大家多多指出下面我们就开始学习怎么使用okhttp吧配置环境github地址:在builde.gradle里面添加上compile'com.squareup.okhttp3:okhttp:3.4.1'在AndroidManifest.xml添加所需权限uses-permissionandroid:name=android.permission.INTERNET/基本使用get异步请求通过get请求获取指定URL网页请求,这里要注意的是Android4.0以后需要在非主线程里使用。privateOkHttpClientclient=newOkHttpClient();pubicstaticvoidget(){//创建一个RequestRequestrequest=newRequest.Builder().url().get().build();//发起异步请求,并加入回调client.newCall(request).execute(newCallback(){@OverridepublicvoidonFailure(Callcall,IOExceptione){//请求失败回调}@OverridepublicvoidonResponse(Callcall,Responseresponse)throwsIOException{//请求成功回调Log.e(okHttp,get=+response.body().string());}});}post异步请求privateOkHttpClientclient=newOkHttpClient();publicstaticvoidpost(){//创建Form表单对象,可以add多个键值队FormBodyformBody=newFormBody.Builder().add(param,value).add(param,value).build();//创建一个RequestRequestrequest=newRequest.Builder().url().post(formBody).build();//发起异步请求,并加入回调client.newCall(request).enqueue(newCallback(){@OverridepublicvoidonFailure(Callcall,IOExceptione){}@OverridepublicvoidonResponse(Callcall,Responseresponse)throwsIOException{Log.e(okHttp,post=+response.body().string());}});}同步请求把client.newCall(request).enqueue(newCallback())改成client.newCall(request).execute().body().string()即可文件上传与多文件上传publicstaticvoidupload(){//多个文件集合ListFilelist=newArrayList();MultipartBody.Builderbuilder=newMultipartBody.Builder();//设置为表单类型builder.setType(MultipartBody.FORM);//添加表单键值builder.addFormDataPart(param,value);for(Filefile:list){//添加多个文件RequestBodyfileBody=RequestBody.create(MediaType.parse(application/octet-stream),file);builder.addFormDataPart(files,file.getName(),fileBody);}Requestrequest=newRequest.Builder().url().post(builder.build()).build();//发起异步请求,并加入回调mOkHttpClient.newCall(request).enqueue(newCallback(){@OverridepublicvoidonFailure(Callcall,IOExceptione){}@OverridepublicvoidonResponse(Callcall,Responseresponse)throwsIOException{Log.e(okHttp,updLoad=+response.body().string());}});}超时设置,整个程序应使用这一个mOkHttpClient对象publicstaticvoidsetTimeout(){mOkHttpClient.newBuilder().connectTimeout(10,TimeUnit.SECONDS)//10秒连接超时.writeTimeout(10,TimeUnit.SECONDS)//10m秒写入超时.readTimeout(10,TimeUnit.SECONDS)//10秒读取超时.build();}文件下载其实很简单,只需要利用get同步或异步请求,然后通过client.newCall(request).execute().body().byteStream()获取InputStream输入流,写文件操作即可实现文件下载。