• Retrofit的通讯方式示例


    Retrofit有两种通讯方式,同步和异步

    异步方式:

     APIService req;
            req = RetrofitManager.getInstance().createReq(APIService.class);
            String deviceId=DeviceUtil.GetDeviceId(context);
            Call<ResponseBody> res= req.getCpDatas(GetBaoCanReqPara(deviceId,fromId));
            res.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    Log.e("", "");
                    try {

    同步方式:

    APIService req;
    req = RetrofitManager.getInstance().createReq(APIService.class);
    try{
           Call<ResponseBody> res= req.CheckSignState(hashMap);
           final Response<ResponseBody> execute = res.execute();
           String json=execute.body().string();

    封装类库:

    import java.util.concurrent.TimeUnit;
    
    import okhttp3.OkHttpClient;
    import okhttp3.logging.HttpLoggingInterceptor;
    import retrofit2.GsonConverterFactory;
    import retrofit2.Retrofit;
    import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
    
    public class RetrofitManager {
        private static RetrofitManager mRetrofitManager;
        private Retrofit mRetrofit;
    
        private RetrofitManager(){
            initRetrofit();
        }
    
        public static synchronized RetrofitManager getInstance(){
            if (mRetrofitManager == null){
                mRetrofitManager = new RetrofitManager();
            }
            return mRetrofitManager;
        }
    
    
        private void initRetrofit() {
            HttpLoggingInterceptor LoginInterceptor = new HttpLoggingInterceptor();
            LoginInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            OkHttpClient.Builder builder = new OkHttpClient.Builder();
    
    
            if (AppConfig.DEBUG){
                builder.addInterceptor(LoginInterceptor); //添加retrofit日志打印
            }
    
    
            builder.connectTimeout(15, TimeUnit.SECONDS);
            builder.readTimeout(20, TimeUnit.SECONDS);
            builder.writeTimeout(20, TimeUnit.SECONDS);
            builder.retryOnConnectionFailure(true);
            OkHttpClient client = builder.build();
    
            mRetrofit = new Retrofit.Builder()
                    .baseUrl(AppConfig.BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//用于返回Rxjava调用,非必须
                    .client(client)
                    .build();
        }
    
        public <T> T createReq(Class<T> reqServer){
            return mRetrofit.create(reqServer);
        }
    }
  • 相关阅读:
    【WP8】关于类库本地化问题
    【WP8】富文本功能实现
    【WP8】换肤功能的实现
    【WP8】图片缓存控件
    【WP8】图片压缩处理
    【WP8】让TextBox文本支持滑动(Scroll)
    <正则吃饺子> :关于Guava中 Joiner 和 Splitter 的简单使用
    <正则吃饺子> :关于前端往后端传递布尔值参数的问题
    <正则吃饺子>:关于使用powerDesign连接oracle数据库,导出数据表结构(ER图吧)
    <正则吃饺子>:关于集合的简单整理总结
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/10120769.html
Copyright © 2020-2023  润新知