Android okHttp的配置使用和Retrofit简单的配置

来源:互联网 发布:json文件修改器 编辑:程序博客网 时间:2024/05/29 05:02
1.这是我刚刚开始写的一篇博客,写的不好的地方请勿喷,我就是当做记笔记一样!
2.接下来说一下okhttp的配置使用:
1)首先要在grade配置一下远程库:compile ‘com.squareup.okhttp3:okhttp:3.2.0’
2)然后再创建一个网络工厂类,把okhttp所以配置的参数信息封装起来。
3)接下来就是创建一个okhttpClient的builder对象:OkHttpClient.Builder builder = new OkHttpClient.Builder();拿到builder对象后,你就可以创建根据自己的需求来配置了,比如:builder.connectTimeout()这个方法是builder对象里面的一个连接超时是方法,方法里面的参数也是根据自己的需求给予的。我还说几个比较常用的,Interceptor这个是一个拦截器,顾名思义,我就是给你们简单的说一个例子,就好比,你在正在请求网络的时候,比如说要配置头信息,你就可以自定义一个拦截器:`

public class HeaderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (UIUtils.getToken() != null) {
LogUtils.d(“为http请求添加Header,状态:已登录”);
request = request.newBuilder()
.addHeader(“Authorization”, “Bearer ” + UIUtils.getToken())
.addHeader(“X-Device-Id”, AppSystemUtil.getDeviceId())
.build();
} else {
request = request.newBuilder()
.addHeader(“X-Device-Id”, AppSystemUtil.getDeviceId())
.build();
}
Response response = chain.proceed(request);
return response;
}
}`
这个就是一个简单的拦截器。当然拦截器的用法有很多,用的概念都是一样,还得要根据自己的需求,我在说一个例子,比如说在请求头里面有加一个请求的签名头信息,而且这个签名是根据请求的接口地址和请求参数以及请求的方法,这样你就要自定义写一个签名拦截器,实现Interceptor类,需要实现intercept方法,这个方法里有个参数(Chain chain),拿到这个参数得到一个Request对象:Request original = chain.request();拿到那个请求的对象你就可以自作签名了,这个Request对象可以拿到你想要的,比如请求地址,请求方法和参数都可以,可以自己去写一下,这里我就不贴代码了,大多数自定义配置参数都是根据自己的需求来写的,首先弄懂了实现的原来就好动手啦。

4)到最后我在讲一下配置Retrofit,这个就比较简单,因为网络层已经是使用okhttp来实现的,现在主要是把okhttp给配置到Retrofit,如下:
Retrofit retrofit = new Retrofit.Builder()            .addConverterFactory(GsonConverterFactory.create())            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())            .baseUrl(baseUrl).client(okHttpClient.build()).build();`

首先还是得new一个Retrofit的builder对象,拿到这个对象后,进行配置即可,比如:如果在添加一个gosn转换器,.addConverterFactory(GsonConverterFactory.create())就是这一句,这样的话请求返回的json就直接封装到一个实体类了,而且这个实体类你要自己自己创建,这样就不用自己一个一个的解析了,在说一个最后一句,.baseUrl(baseUrl).client(okHttpClient.build()).build();`baseUrl是指你要请求的接口的域名,client就是指定请求网络层用okhttp,最后别忘了点builder一下哦

0 0