1、点击File-->Project Structure,如图:
2、点击左侧栏的“app”,然后点击顶部导航的“Dependencies”,最后点击“加号”,点击“加号”后,会出现三个选项,选择第一个(添加第三方库),如图:
3、输入,“okhttp”,点击搜索按钮,如图:
4、选择“com.squareup.okhttp:okhttp:2.7.5”,点击“OK”,如图:
5、这时我们可以看到“Dependencies”中增加了一个,“com.squareup.okhttp:okhttp:2.7.5”,点击“OK”按钮,如图:
6、这时看到,app文件夹下的“build.gradle”文件中,"dependencies"下增加了“com.squareup.okhttp:okhttp:2.7.5'”,然后就是少许的等待,如图:
二、okhttp的使用
1、首先构造一个OkHttpClient对象,OkHttpClient okHttpClient = new OkHttpClient()
2、然后,创建一个Request对象,Request request = new Request.Builder().url(url).get().build()注意其中括号中的url就是你请求数据的url
3、最后OkHttpClient对象去构造得到一个Call对象,去异步请求(enqueue),okHttpClient.newCall(request).enqueue(new Callback() {});
一个最简单的OkHttpClient
一个复杂点的OkHttpClient配置
具体可配置参数见OkHttpClient.Builder类,几点注意事项:
两种拦截器的区别
官方提供的Logging Interceptor
地址: https://github.com/victorfan336/okhttp-logging-interceptor
gradle.build中添加依赖:
compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'
通过Request.Builder创建请求,默认是Get请求
主要是构建RequestBody,并设置Content-Type消息头。
1.普通Post请求
比如json请求
2. 使用FormBody传递键值对参数
Content-Type: application/x-www-form-urlencoded
比如:
3. 使用RequestBody传递Json或File对象
4. 使用MultipartBody同时传递键值对参数和File对象
5. 使用MultipartBody提交分块请求
6. 自定义RequestBody实现流的上传
1、同步执行
由于android强制要求网络请求在线程中执行,所以无法使用execute
2、异步执行
1. 设置请求头
2. 设置超时
3. 设置缓存
1、对于Get请求,如果请求参数较多,自己拼接Url较为麻烦
比如
拼接结果: http://www.baidu.com/user/login/username=zhangsan&password=123456
如果能做一些封装,直接addParam(key,value)的形式则会简单很多。
2、Callback在子线程中回调,大部分时候,我们都是需要更新UI的,还需自己post到主线程中处理。
3、构建请求步骤比较多
因此,Square提供了针对OkHttp的封装库Retrofit,另外Github上也有很多第三方的封装库,比如OkGo。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)