Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/50608438 Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)  简单说两句,该框架是okhttp再次封装的实现,性能挺高的哦。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/50608438

Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)

  简单说两句,该框架是okhttp再次封装的实现,性能挺高的哦。不罗嗦了,直接上代码

 1.需要的类库:

    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
    compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
    compile 'io.reactivex:rxjava:1.1.0'
    compile 'io.reactivex:rxandroid:1.1.0'

2.GET形式:

 @GET("/weather")
        WeatherData getWeather(@Query("APPID") String AppID,@Query("q") String place, @Query("units") String units);

3.POST形式:

 @FormUrlEncoded
        @POST("/cuslogin")
        Observable<Chni_User>  login (@Field("data") String data);

 4.Retrofit实现

 private static final Retrofit sRetrofit = new Retrofit .Builder()
            .baseUrl(ENDPOINT)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 使用RxJava作为回调适配器
            .build();
    private static final ApiManagerService apiManager = sRetrofit.create(ApiManagerService.class);

5.以下是代码的实现

   private interface ApiManagerService {

        @GET("/weather")
        WeatherData getWeather(@Query("APPID") String AppID,@Query("q") String place, @Query("units") String units);

        /**
         * retrofit 支持 rxjava 整合
         * 这种方法适用于新接口
         */
        @GET("/weather")
        Observable<WeatherData> getWeatherData(@Query("APPID") String AppID,@Query("q") String place, @Query("units") String units);

        @FormUrlEncoded
        @POST("/cuslogin")
        Observable<Chni_User>  login (@Field("data") String data);


    }

/**
     * 将服务接口返回的数据,封装成{@link rx.Observable}
     * 这种写法适用于将旧代码封装
     * @param city
     * @return
     */
    public static Observable<WeatherData> getWeatherData(final String city) {
        return Observable.create(new Observable.OnSubscribe<WeatherData>() {
            @Override
            public void call(Subscriber<? super WeatherData> subscriber) {
                //订阅者回调 onNext 和 onCompleted
                subscriber.onNext(apiManager.getWeather("ee9c42978f2e9be685994bf32b87cdc0", city, "metric"));
                subscriber.onCompleted();
            }
        }).subscribeOn(Schedulers.io());
    }

    public static Observable<WeatherData> getWeatherData1(final String city) {
        return apiManager.getWeatherData("ee9c42978f2e9be685994bf32b87cdc0", city, "metric");
    }

public static Observable<Chni_User> login( final String data){
//        return  apiManager.getMyProduces(pageNumber,"10");
        return apiManager.login(data);
    }

调用:
      String t = SystemAttrUtlis.getPostTimeNow();
        String s = "0010000app";
        String ko = "0000";
        String time = t;
        String token = MD5s(t + s);
        String data = "";
        Map<String, String> params = new HashMap<String, String>();
        params.put("username", "lidong");
        params.put("password", "325106");
        params.put("orgid", "0010000");
        CkeckServerTokenUtils.handleServerCheck(params);
        final Map<String, String> params1 = new HashMap<String, String>();
        JSONObject jsonObject1 = new  JSONObject(params);
        data=jsonObject1.toString();
        Log.v("zgy", data);
        ApiManager.login(data).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<Chni_User>() {
                    @Override
                    public void call(Chni_User ss) {
//                        Log.d(LOG_TAG, weatherData.toString());
                        ((TextView) findViewById(R.id.tv_demo)).setText(ss.getCustomerid());
                    }
                }, new Action1<Throwable>() {
                    @Override
                    public void call(Throwable throwable) {
                        Log.e(LOG_TAG, throwable.getMessage(), throwable);
                    }
                });
    }
 ApiManager.getWeatherData1(CITIES[0]).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<WeatherData>() {
                    @Override
                    public void call(WeatherData weatherData) {
                        Log.d(LOG_TAG, weatherData.toString());
                       ((TextView) findViewById(R.id.tv_demo1)).setText(weatherData.toString());                    }
                }, new Action1<Throwable>() {                    @Override
                    public void call(Throwable throwable) {
                        Log.e(LOG_TAG, throwable.getMessage(), throwable);
                   }
               });

就这些了吧。有问题大家提出来。
相关文章
|
1月前
|
SQL 缓存 安全
Android ORM 框架之 greenDAO
Android ORM 框架之 greenDAO
37 0
|
4月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
41 0
|
5月前
|
JSON 前端开发 Android开发
Android MVI框架搭建与使用(上)
Android MVI框架搭建与使用(上)
122 0
|
1月前
|
缓存 Java API
Android 应用中基于 Retrofit 的网络请求优化实践
【4月更文挑战第5天】 在移动开发领域,网络通信是实现数据交换与服务集成的关键环节。针对安卓平台,Retrofit 作为一种流行且强大的HTTP客户端库,提供了简洁高效的网络请求解决方案。本文将深入探讨在 Android 应用程序中使用 Retrofit 进行网络请求时的性能优化策略,涵盖异步处理、请求重试机制、线程池管理以及缓存策略等方面。通过这些优化手段,开发者可以显著提升应用的响应速度和用户体验,同时确保数据传输的可靠性和效率。
10 1
|
4月前
|
SQL 存储 数据库
Android数据库框架该如何选?
Android数据库框架该如何选?
76 0
|
5月前
|
存储 前端开发 API
Android MVI框架搭建与使用(下)
Android MVI框架搭建与使用(下)
|
5月前
|
XML JSON Android开发
[Android]网络框架之Retrofit(kotlin)
[Android]网络框架之Retrofit(kotlin)
62 0
|
5月前
|
缓存 JSON Android开发
[Android]网络框架之OkHttp(详细)(kotlin)
[Android]网络框架之OkHttp(详细)(kotlin)
169 0
|
5天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
7天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比