zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    Windows服务的安装及配合定时器编写简单的程序
    关于VS2019使用Git时遇到的Bug
    记一次工作中的小BUG
    .Net WebApi接口Swagger集成简单使用
    kettle 创建数据库资源库
    C# 语法 i++;++i;i--;--i
    MSDN
    Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
    Jenkins持续集成(上)-Windows下安装Jenkins
    自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/10120769.html
Copyright © 2011-2022 走看看