Retrofit和Rxjava结合的例子
来源:互联网 发布:计价软件试用版 编辑:程序博客网 时间:2024/06/06 13:17
//添加依赖
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'
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
import retrofit.Callback;
import retrofit.GsonConverterFactory;
import retrofit.Response;
import retrofit.Retrofit;
import retrofit.RxJavaCallAdapterFactory;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class MainActivity extends AppCompatActivity {
///////////////////////////////////////////////////此API接口会过期,请在http://www.haoservice.com/docs/6中重新申请一次
String apiKey = "9b1e877ce7634787b7a12aa0379cc81a";
String baseUrl = "http://apis.haoservice.com/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
get();
getByRxJava();
}
private void getByRxJava() {
Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
APIService service = retrofit.create(APIService.class);
Observable<Weather> observable = service.getWeatherData("杭州", apiKey);
observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Weather>() {
@Override
public void onCompleted() {
Log.i("zhk-MainActivity", "onCompleted: ");
Toast.makeText(getApplicationContext(),
"Completed",
Toast.LENGTH_SHORT)
.show();
}
@Override
public void onError(Throwable e) {
Log.e("zhk-MainActivity", "onError: ", e);
Toast.makeText(getApplicationContext(),
"Error:" + e.getMessage(),
Toast.LENGTH_SHORT)
.show();
}
@Override
public void onNext(Weather weather) {
Weather.ResultEntity.TodayEntity todayEntiry = weather.getResult().getToday();
Log.i("zhk-MainActivity", "onNext: 城市:" + todayEntiry.getCity() + " 温度:" + todayEntiry.getTemperature());
Toast.makeText(MainActivity.this, "城市:" + todayEntiry.getCity() + " 温度:" + todayEntiry.getTemperature(), Toast.LENGTH_SHORT).show();
}
});
}
private void get() {
Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
APIService service = retrofit.create(APIService.class);
service.loadeather("杭州", apiKey).enqueue(new Callback<Weather>() {
@Override
public void onResponse(Response<Weather> response, Retrofit retrofit) {
if (response.body() != null) {
Weather weather = response.body();
Weather.ResultEntity.TodayEntity todayEntiry = weather.getResult().getToday();
Log.i("zhk-MainActivity", "onResponse: 城市:" + todayEntiry.getCity() + " 温度:" + todayEntiry.getTemperature());
} else {
Log.e("zhk-MainActivity", "onResponse: body==null");
}
}
@Override
public void onFailure(Throwable t) {
Log.e("zhk-MainActivity", "onFailure: ", t);
}
});
}
}
//第二个类
package com.ethanco.retrofit2_0test;
import java.util.List;
/**
* Created by Zhk on 2015/12/20.
*/
public class Weather {
/**
* error_code : 0
* reason : 成功
* result : {"sk":{"temp":"8","wind_direction":"西北风","wind_strength":"2级","humidity":"94","time":"20:38"},"today":{"city":"杭州","date_y":"2015年12月20日","week":"星期日","temperature":"6~12","weather":"小雨","fa":"07","fb":"02","wind":"东风 微风","dressing_index":"较冷","dressing_advice":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。","uv_index":"最弱","comfort_index":"--","wash_index":"不宜","travel_index":"较不宜","exercise_index":"较不宜","drying_index":"--"},"future":[{"temperature":"8~12","weather":"多云","fa":"01","fb":"02","wind":"无持续风向 微风","week":"星期一","date":"20151221"},{"temperature":"9~12","weather":"中雨","fa":"08","fb":"08","wind":"东风 微风","week":"星期二","date":"20151222"},{"temperature":"9~11","weather":"小雨","fa":"07","fb":"07","wind":"东北风 微风","week":"星期三","date":"20151223"},{"temperature":"5~11","weather":"小雨","fa":"07","fb":"07","wind":"北风 微风","week":"星期四","date":"20151224"},{"temperature":"2~9","weather":"阴","fa":"02","fb":"01","wind":"西北风 微风","week":"星期五","date":"20151225"},{"temperature":"1~9","weather":"晴","fa":"00","fb":"01","wind":"东北风 微风","week":"星期六","date":"20151226"}]}
*/
private int error_code;
private String reason;
/**
* sk : {"temp":"8","wind_direction":"西北风","wind_strength":"2级","humidity":"94","time":"20:38"}
* today : {"city":"杭州","date_y":"2015年12月20日","week":"星期日","temperature":"6~12","weather":"小雨","fa":"07","fb":"02","wind":"东风 微风","dressing_index":"较冷","dressing_advice":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。","uv_index":"最弱","comfort_index":"--","wash_index":"不宜","travel_index":"较不宜","exercise_index":"较不宜","drying_index":"--"}
* future : [{"temperature":"8~12","weather":"多云","fa":"01","fb":"02","wind":"无持续风向 微风","week":"星期一","date":"20151221"},{"temperature":"9~12","weather":"中雨","fa":"08","fb":"08","wind":"东风 微风","week":"星期二","date":"20151222"},{"temperature":"9~11","weather":"小雨","fa":"07","fb":"07","wind":"东北风 微风","week":"星期三","date":"20151223"},{"temperature":"5~11","weather":"小雨","fa":"07","fb":"07","wind":"北风 微风","week":"星期四","date":"20151224"},{"temperature":"2~9","weather":"阴","fa":"02","fb":"01","wind":"西北风 微风","week":"星期五","date":"20151225"},{"temperature":"1~9","weather":"晴","fa":"00","fb":"01","wind":"东北风 微风","week":"星期六","date":"20151226"}]
*/
private ResultEntity result;
public void setError_code(int error_code) {
this.error_code = error_code;
}
public void setReason(String reason) {
this.reason = reason;
}
public void setResult(ResultEntity result) {
this.result = result;
}
public int getError_code() {
return error_code;
}
public String getReason() {
return reason;
}
public ResultEntity getResult() {
return result;
}
public static class ResultEntity {
/**
* temp : 8
* wind_direction : 西北风
* wind_strength : 2级
* humidity : 94
* time : 20:38
*/
private SkEntity sk;
/**
* city : 杭州
* date_y : 2015年12月20日
* week : 星期日
* temperature : 6~12
* weather : 小雨
* fa : 07
* fb : 02
* wind : 东风 微风
* dressing_index : 较冷
* dressing_advice : 建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。
* uv_index : 最弱
* comfort_index : --
* wash_index : 不宜
* travel_index : 较不宜
* exercise_index : 较不宜
* drying_index : --
*/
private TodayEntity today;
/**
* temperature : 8~12
* weather : 多云
* fa : 01
* fb : 02
* wind : 无持续风向 微风
* week : 星期一
* date : 20151221
*/
private List<FutureEntity> future;
public void setSk(SkEntity sk) {
this.sk = sk;
}
public void setToday(TodayEntity today) {
this.today = today;
}
public void setFuture(List<FutureEntity> future) {
this.future = future;
}
public SkEntity getSk() {
return sk;
}
public TodayEntity getToday() {
return today;
}
public List<FutureEntity> getFuture() {
return future;
}
public static class SkEntity {
private String temp;
private String wind_direction;
private String wind_strength;
private String humidity;
private String time;
public void setTemp(String temp) {
this.temp = temp;
}
public void setWind_direction(String wind_direction) {
this.wind_direction = wind_direction;
}
public void setWind_strength(String wind_strength) {
this.wind_strength = wind_strength;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public void setTime(String time) {
this.time = time;
}
public String getTemp() {
return temp;
}
public String getWind_direction() {
return wind_direction;
}
public String getWind_strength() {
return wind_strength;
}
public String getHumidity() {
return humidity;
}
public String getTime() {
return time;
}
}
public static class TodayEntity {
private String city;
private String date_y;
private String week;
private String temperature;
private String weather;
private String fa;
private String fb;
private String wind;
private String dressing_index;
private String dressing_advice;
private String uv_index;
private String comfort_index;
private String wash_index;
private String travel_index;
private String exercise_index;
private String drying_index;
public void setCity(String city) {
this.city = city;
}
public void setDate_y(String date_y) {
this.date_y = date_y;
}
public void setWeek(String week) {
this.week = week;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public void setWeather(String weather) {
this.weather = weather;
}
public void setFa(String fa) {
this.fa = fa;
}
public void setFb(String fb) {
this.fb = fb;
}
public void setWind(String wind) {
this.wind = wind;
}
public void setDressing_index(String dressing_index) {
this.dressing_index = dressing_index;
}
public void setDressing_advice(String dressing_advice) {
this.dressing_advice = dressing_advice;
}
public void setUv_index(String uv_index) {
this.uv_index = uv_index;
}
public void setComfort_index(String comfort_index) {
this.comfort_index = comfort_index;
}
public void setWash_index(String wash_index) {
this.wash_index = wash_index;
}
public void setTravel_index(String travel_index) {
this.travel_index = travel_index;
}
public void setExercise_index(String exercise_index) {
this.exercise_index = exercise_index;
}
public void setDrying_index(String drying_index) {
this.drying_index = drying_index;
}
public String getCity() {
return city;
}
public String getDate_y() {
return date_y;
}
public String getWeek() {
return week;
}
public String getTemperature() {
return temperature;
}
public String getWeather() {
return weather;
}
public String getFa() {
return fa;
}
public String getFb() {
return fb;
}
public String getWind() {
return wind;
}
public String getDressing_index() {
return dressing_index;
}
public String getDressing_advice() {
return dressing_advice;
}
public String getUv_index() {
return uv_index;
}
public String getComfort_index() {
return comfort_index;
}
public String getWash_index() {
return wash_index;
}
public String getTravel_index() {
return travel_index;
}
public String getExercise_index() {
return exercise_index;
}
public String getDrying_index() {
return drying_index;
}
}
public static class FutureEntity {
private String temperature;
private String weather;
private String fa;
private String fb;
private String wind;
private String week;
private String date;
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public void setWeather(String weather) {
this.weather = weather;
}
public void setFa(String fa) {
this.fa = fa;
}
public void setFb(String fb) {
this.fb = fb;
}
public void setWind(String wind) {
this.wind = wind;
}
public void setWeek(String week) {
this.week = week;
}
public void setDate(String date) {
this.date = date;
}
public String getTemperature() {
return temperature;
}
public String getWeather() {
return weather;
}
public String getFa() {
return fa;
}
public String getFb() {
return fb;
}
public String getWind() {
return wind;
}
public String getWeek() {
return week;
}
public String getDate() {
return date;
}
}
}
}
//第三个类
package com.ethanco.retrofit2_0test;
import retrofit.Call;
import retrofit.http.GET;
import retrofit.http.Query;
import rx.Observable;
/**
* Created by Zhk on 2015/12/20.
*/
public interface APIService {
@GET("weather")
Call<Weather> loadeather(@Query("cityname") String cityname,@Query("key") String apiKey);
/**
* retrofit 支持 rxjava 整合
* 这种方法适用于新接口
*/
@GET("weather")
Observable<Weather> getWeatherData(@Query("cityname") String cityname, @Query("key") String apiKey);
}
- Retrofit和Rxjava结合的例子
- Retrofit和RxJava结合使用例子分析
- rxjava和retrofit结合
- RxJava和Retrofit结合
- Retrofit和RxJava的结合使用
- Rxjava和Retrofit结合使用的案例
- retrofit和Rxjava结合 recyclerview的应用
- Dragger2、RxJava和Retrofit的巧妙结合
- Retrofit 和 Rxjava 的结合使用
- 自己写的RxJava和Retrofit结合
- 结合retrofit和rxjava的使用
- Retrofit 和 RxJava 结合使用
- Retrofit和RxJava结合使用
- RxJava和Retrofit结合使用
- RxJava和Retrofit结合使用
- rxjava 和retrofit 结合使用
- Retrofit+Rxjava的完美结合
- Retrofit + RxJava 的结合使用
- 简易版贪吃蛇小游戏。
- java中的类修饰符、成员变量修饰符、方法修饰符。
- java
- [POJ2420]模拟退火
- C++中,get getline gets 用法
- Retrofit和Rxjava结合的例子
- Android——SeekBar自定义进度条背景无法充满的问题
- 机器学习讲座
- Linux-五-压缩与解压缩-(20170518)
- Python 元组
- Java基础学习之-07
- 升讯威微信营销系统开发实践:(5) Github 源码:微信接口的 .NET 封装
- JavaScript入门基础--对象
- 最短路(floyd+bellman+dijkstra+dijkstra优先队列优化+spfa)