简单实现Retrofit+Rx java 网络请求+请求头

本文介绍了Retrofit,一个基于OkHttp的轻量级网络请求框架,以其性能优秀、使用简单而受到青睐。文章通过注解的方式展示了如何进行URL拼接,定制请求参数,并且说明了Retrofit默认使用OkHttp和Gson进行数据处理,同时支持同步和异步请求。文中还简单展示了如何添加请求头,提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:
说起Retrofit网络请求这个框架 也是基于OkHttp之上的,
它是一种轻量级以及使用注解和动态代理的网络请求框架,
是目前比较流行的网络请求,Retrofit是square公司开源系列的精品之一,
简单好用,效率高,基于REST的架构风格,本框架的主要开发人Jake Wharton

特点:
性能好,处理快,使用简单是目前比较火的网络请求。
使用注解方式,大大地简化了URL拼接方式,注解一目了然,简单易懂。
请求参数注解都可以定制
默认使用OKHTTP请求
默认使用来进行数据解析
支持同步和异步执行,使得请求变得异常简单,只要调用enqueue/execute即可完成

分类:
注解是以@注解名在代码中存在的,根据注解的参数个数我们可以分为:
1.标记注解
2.单值注解
3.完整注解

接下来简单实现以下代码

public class RetrofitUntil {
private static final String TAG = "RetrofitUntil";

public static RetrofitUntil retrofitUntil;

private RetrofitUntil() {

}

public static RetrofitUntil getInstance() {
    if (retrofitUntil == null) {
        synchronized (RetrofitUntil.class) {
            if (retrofitUntil == null) {
                retrofitUntil = new RetrofitUntil();
            }
        }
    }
    return retrofitUntil;
}

private static synchronized OkHttpClient getOkHttpClient() {

// 日志拦截器

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .readTimeout(5000, TimeUnit.MILLISECONDS)
            .writeTimeout(5000, TimeUnit.MILLISECONDS)
            .connectTimeout(5000, TimeUnit.MILLISECONDS)
            .addInterceptor(new HeadUntil())
            .addInterceptor(interceptor)
            .build();

    return okHttpClient;
}

private static synchronized Retrofit getRetrofit(String url) {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(url)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//rx java
            .client(getOkHttpClient())
            .build();
    return retrofit;
}

// 获取上面的retrofit 动态代理

public <T> T setCreat(Class<T> apiService, String url) {
    Retrofit retrofit = getRetrofit(url);
    return retrofit.create(apiService);
}

}

请求头

public class HeadUntil implements Interceptor {
//     头
@Override
public Response intercept(Chain chain) throws IOException {

// 请求对象

        Request request = chain.request();
        SharedPreferences sharedPreferences = App.mContext.getSharedPreferences("user", Context.MODE_PRIVATE);

    Request build = request.newBuilder()

// 添加请求头

    .addHeader("xxx", sharedPreferences.getString("xxx", ""))
  	.addHeader("xxx", sharedPreferences.getString("xxx", ""))

            .build();
    Response proceed = chain.proceed(build);
    return proceed;
}
}

在m数据层调用以下即可,因为每个人的数据层不一样所以只供参考哦

public class ShowModel implements ShowControcat.ShowModel {
    @Override
    public void responce(final ShowCallBack showCallBack) {
        ApiService apiService = RetrofitUntil.getInstance().setCreat(ApiService.class, Api.BASE_URL);
        Observable<ShowGson> show = apiService.getShow();
        show.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeWith(new Observer<ShowGson>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(ShowGson value) {
                    if (value!=null){
                    
                       在这个方法中写数据即可
                       
                    }
                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值