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);
        }
    }
  • 相关阅读:
    记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书
    记-阅读以及书籍推荐(2014年9月7日更新)
    初探领域驱动设计(1)为复杂业务而生
    异步编程 In .NET
    Windows平台分布式架构实践
    Windows平台分布式架构实践
    一不小心写了个WEB服务器
    MVC5
    从Membership 到 .NET4.5 之 ASP.NET Identity
    bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/10120769.html
Copyright © 2011-2022 走看看