Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)
来源:互联网 发布:中国数据分析行业网 编辑:程序博客网 时间:2024/06/06 02:47
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
- Android Retrofit 20框架 GET和POST的实现方式配合RxJava
- 1需要的类库
- GET形式
- POST形式
- 4Retrofit实现
- 以下是代码的实现
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);
- }
- });
就这些了吧。有问题大家提出来。
0 0
- Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)
- Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)
- volley框架配合后端服务器实现get post请求以及图片的上传和下载
- 使用Retrofit结合RxJava实现Get与Post网络请求
- Retrofit + RxJava的配合使用
- mvp框架学习实战代码(配合retrofit+dagger2+rxjava)
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- Retrofit 2.0 + RxJava 2.0搭建简单的Android请求框架。
- Android Volley框架的几种post提交请求方式和探究POST、GET提交
- 【Android - 框架】之Retrofit+RxJava的使用
- Android框架学习之Retrofit(二)RxJava和Retrofit2.0的结合使用
- Rxjava+Retrofit 2.0实现网络框架
- 【Android】Retrofit的使用(4)-Retrofit进行简单的GET和POST访问操作
- Okhttp和Retrofit的get,post请求
- Android-Volley框架中的get和post方式
- Android Rxjava和retrofit
- Android--MVP+Retrofit+Rxjava的实现
- 初学者---Android (简单总结)Retrofit请求方式之get,post
- Spring boot配置Junit
- Android 使用AIDL实现进程之间的通信(一)
- form表单元素类型
- Im4JavaUtils
- 《C++ Primer》读书笔记-第六章 05 特殊用途语言特性
- Android Retrofit 2.0框架 GET和POST的实现方式(配合RxJava)
- android imageloader 两种加载图片方式的差异
- Can't load IA 32-bit .dll on a AMD 64-bit platform. 报错原因之一
- 微服务:使用Eureka构建集群
- AD9画PCB快捷键
- 《C++ Primer》读书笔记-第六章 06 函数匹配
- html中子div用了浮动怎样让父div的大小自动撑开(清除浮动)
- Spring Cloud Netflix中文文档翻译笔记
- 1005. Spell It Right (20)