Retrofit的封装

api接口的封装

public interface Api {
    //登录
    @POST("/")
    Call<LoginBean> getLoginMessage();
    //注册验证码
    @POST("index/sendcode")
    Call<RegistrationValiDataBean> getRegistrationValidataCode();
    //注册
    @POST("index/register")
    Call<RegistrationBean> getRegistrationMessage();
    //社区
当没有参数的时候可以使用“/”或者“.”发送请求
    @GET("/")
    Call<String> getCommunityMessage();
}
自定义拦截器

//网络请求拦截器
public class CoustomInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request;
        request = chain.request();
        Response response = chain.proceed(request);
        return response;
    }

}

接口对应一个service

private Call mCall;

public static RegistrationService getInstanceRegistrationService(){
    return new RegistrationService();
}

public void requestRegistrationApi(final OnRequest loginListen){
    final Call<RegistrationBean> loginCall = buildApi(buildClient()).getRegistrationMessage();
    loginCall.enqueue(new Callback<RegistrationBean>() {
        @Override
        public void onResponse(Call<RegistrationBean> call, Response<RegistrationBean> response) {
            if (loginListen != null){
                loginListen.OnRequestSuccess(call,response);
            }
        }

        @Override
        public void onFailure(Call<RegistrationBean> call, Throwable t) {
            if (loginListen != null){
                loginListen.OnRequestFail(call,t);
            }
        }
    });
    mCall = loginCall;

}
//关闭请求 在ondestory
public void cancle(){
    if (mCall != null){
        mCall.cancel();
    }
}
//build OkhttpClient
private OkHttpClient buildClient(){
    return new OkHttpClient.Builder()
            .addInterceptor(new CoustomInterceptor()).build();
}
//实例化 Api
private Api buildApi(OkHttpClient client){
    return new Retrofit.Builder().baseUrl(HttpUrl.BASE_URL).client(client)
            .addConverterFactory(GsonConverterFactory.create())
            .build().create(Api.class);

}
关闭请求
@Override
protected void onDestroy() {
    super.onDestroy();
    if (mLoginService != null){
        mLoginService.cancle();
    }

}

网络请求监听接口使用泛型

//网络请求的监听  泛型
public interface OnRequest<T> {

    void OnRequestSuccess(Call<T> call, Response<T> response);
    void OnRequestFail(Call<T> call,Throwable throwable);
}
使用方法

实例化监听

mOnRequest = new OnRequest<String>() {
    @Override
    public void OnRequestSuccess(Call<String> call, Response<String> response) {
        mTextView.setText(response.body());
    }

    @Override
    public void OnRequestFail(Call<String> call, Throwable throwable) {
        
    }
};

if (mCommunityService == null) {
    mCommunityService = CommunityService.getInstanceCommunityService();
    mCommunityService.requestCommunityApi(mOnRequest);
} else {
service发送请求
    mCommunityService.requestCommunityApi(mOnRequest);
}
 

更改数据类型String ,一般使用gson,有时候测试要用String 可以使用自定义数据类型Converter

.addConverterFactory(new Converter.Factory() {
    @Nullable
    @Override
    public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
        return new Converter<ResponseBody, String>() {
            @Override
            public String convert(ResponseBody value) throws IOException {
                return value.string();
            }
        };
    }
})
一般使用的是

.addConverterFactory(GsonConverterFactory.create()) // Gson解析


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值