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);
                   }
               });

就这些了吧。有问题大家提出来。
相关文章
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
4天前
|
算法 JavaScript Android开发
|
13天前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
46 1
|
2月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
312 3
|
2月前
|
编译器 Android开发 开发者
带你了解Android Jetpack库中的依赖注入框架:Hilt
本文介绍了Hilt,这是Google为Android开发的依赖注入框架,基于Dagger构建,旨在简化依赖注入过程。Hilt通过自动化的组件和注解减少了DI的样板代码,提高了应用的可测试性和可维护性。文章详细讲解了Hilt的主要概念、基本用法及原理,帮助开发者更好地理解和应用Hilt。
71 8
|
3月前
|
设计模式 Java Android开发
探索安卓应用开发:从新手到专家的旅程探索iOS开发中的SwiftUI框架
【8月更文挑战第29天】本文旨在通过一个易于理解的旅程比喻,带领读者深入探讨安卓应用开发的各个方面。我们将从基础概念入手,逐步过渡到高级技术,最后讨论如何维护和推广你的应用。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的代码示例。让我们一起开始这段激动人心的旅程吧!
|
3月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
如何使用Amlogic T972安卓9.0系统上的misc框架来简化驱动程序开发,通过misc框架自动分配设备号并创建设备文件,从而减少代码量并避免设备号冲突。
38 0
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
|
Java Android开发
Android/Java网络加载框架Retrofit(一)初识
Android/Java网络加载框架Retrofit(一)初识Retrofit是Square针对Android网络I/O设计的一套框架。
1099 0
|
Java Android开发
Android/Java网络加载框架Retrofit(二)load bitmap into ListView
Android/Java网络加载框架Retrofit(二)load bitmap into ListView package zhangphil.
948 0
|
Java Android开发
Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2 把Retrofit与RxAndroid 2与RxJava 2联合使用,实现一个简单功能:加载一批图片到ListView中。
1468 0