这里只是简单的说一下 他们的用法 具体的原理不做解释因为我也不会
1.首先导入retrofit的依赖
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
最新版本地址: https://github.com/square/retrofit
2.rxjava
第二个依赖 retrofit 对 rxjava2的适配的一个依赖 这样就可已使用rxjava2 了 而不是直接去rxjava的官网上找依赖 那样运行的时候会报错的
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.4'
最新版本地址:
https://github.com/square/retrofit/tree/master/retrofit-adapters/rxjava2
https://github.com/ReactiveX/RxJava
前面是retrofit 对 rxjava2的适配 后面是rxjava的最新版本
3.之后在项目中创建一个接口 ~不要想这是干甚么用的到后面 你大概就知道了 应该
package com.bwie.test1126002.net;
import java.util.Map;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;
public interface BaseService {
@GET
Observable<ResponseBody> get(@Url String url, @QueryMap Map<String, String> map);
@POST
Observable<ResponseBody> post(@Url String url, @QueryMap Map<String, String> map);
}
4.
package com.bwie.text1126.net;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
public abstract class BaseObserver<T> implements Observer<T> {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public abstract void onNext(T t);
@Override
public abstract void onError(Throwable e);
@Override
public void onComplete() {
}
}
5.
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
最新版本地址:
https://square.github.io/retrofit/
https://github.com/ReactiveX/RxAndroid
6.
package com.bwie.test1126002.net;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class HttpHelper {
private static HttpHelper ourInstance;
private Retrofit retrofit;
private HttpHelper() {
}
public static HttpHelper getInstance() {
if(ourInstance==null){
synchronized (HttpHelper.class){
ourInstance=new HttpHelper();
}
}
return ourInstance;
}
public void init(String baseUrl){
retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
public void doGet(String url, Map<String,String> map, Observer observer){
if(map==null){
map=new HashMap<>();
}
retrofit.create(BaseService.class)
.get(url,map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public void doPost(String url, Map<String,String> map, Observer observer){
if(map==null){
map=new HashMap<>();
}
retrofit.create(BaseService.class)
.post(url,map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
}
7.
package com.bwie.test1126002.app;
import android.app.Application;
import com.bwie.test1126002.net.HttpHelper;
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
HttpHelper.getInstance().init("http://www.zhaoapi.cn/");
}
}
记得在清单文件里注册
8.
package com.bwie.test1126002;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.bwie.test1126002.net.BaseObserver;
import com.bwie.test1126002.net.HttpHelper;
import java.io.IOException;
import okhttp3.ResponseBody;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HttpHelper.getInstance().doGet("/ad/getAd", null, new BaseObserver<ResponseBody>() {
@Override
public void onNext(ResponseBody value) {
try {
Log.i("main", "onNext: " + value.string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable e) {
Log.i("main", "onError: " + e.getMessage());
}
});
}
}