一,导入依赖
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.retrofit2:retrofit:2.2.0' compile 'com.squareup.retrofit2:converter-gson:2.2.0' compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.facebook.fresco:fresco:0.9.0+'
二,配置网络权限
<uses-permission android:name="android.permission.INTERNET"/>
三,把Bean请求出来创建好
四,还是需要创建一个接口类
//接口 public class Api { //http://120.27.23.105/product/getCatagory public final static String string1 = "http://120.27.23.105"; public final static String string2 = "/product/getCatagory"; }
五,写一个接口
//retrofit /*public interface Service { //把接口穿进去,先只传路径 @GET(Api.string2) //回调数据的接口,泛型为接口Bean类,方法名。 Call<Bean> getData(); }*/ //retrofit+Rxjava public interface Service { //把接口传进去,先只传路径 @GET(Api.string2) //回调数据的接口,泛型为接口Bean类,方法名,Call对象改成被观察者 //Call<Bean> 变成创建一个被观察者。 Observable<Bean> getData(); }
六,Activity
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建Retrofit对象 /*OkHttpClient client = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS).build();*/ Retrofit retrofit = new Retrofit.Builder() //这里填接口的域名(接口上半部分) .baseUrl(Api.string1) //.client(client) //调用Retrofit自己的解析方法,包含了Gson .addConverterFactory(GsonConverterFactory.create()) // 集合RxJava后需要加的 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // .build(); Service service = retrofit.create(Service.class); Observable<Bean> data = service.getData(); //注册 data.subscribeOn(Schedulers.io()) //观察者 .observeOn(AndroidSchedulers.mainThread()) //订阅 .subscribe(new Observer<Bean>() { @Override public void onNext(Bean bean) { //成功之后走的方法 Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show(); } @Override public void onCompleted() { //成功 } @Override public void onError(Throwable e) { System.out.println("e = " + e.getMessage()); Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show(); } }); /*//原retrofit Service service = retrofit.create(Service.class); //拿到回调的数据 Call<Bean> data = service.getData(); //使用异步请求方式 data.enqueue(new Callback<Bean>() { @Override public void onResponse(Call<Bean> call, Response<Bean> response) { Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(Call<Bean> call, Throwable t) { Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show(); } });*/ } }