最近的一个项目上用的是这个联网,用起来挺方便的,而且代码管理上很方便。我用的是studio首先在grade里添加
compile ‘com.squareup.retrofit2:retrofit:2.3.0’
compile ‘com.squareup.retrofit2:converter-gson:2.3.0’
compile ‘com.squareup.retrofit2:adapter-rxjava2:2.3.0’
compile ‘com.squareup.okhttp3:logging-interceptor:3.6.0’
compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’
compile ‘io.reactivex.rxjava2:rxjava:2.0.7’
代码如下
public class RetrofitHelper {
private static final String BASE_URL = "Host网址";
//okhttp客户端对象
private static OkHttpClient mOkHttpClient;
static {
//这里首先执行
initOkhttp();
}
//初始化okhttp客户端,synchronized为了保证单例
private static void initOkhttp() {
if (mOkHttpClient == null) {
synchronized (RetrofitHelper.class) {
if (mOkHttpClient == null) {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
mOkHttpClient = builder
.retryOnConnectionFailure(true) //连接失败时自动重连
.connectTimeout(10, TimeUnit.SECONDS) //设置连接网络超时时间,单位是秒
.readTimeout(20, TimeUnit.SECONDS) //读取数据超时时间
.writeTimeout(20, TimeUnit.SECONDS)//写入数据超时时间
.build(); //缓存和拦截器如果没有需求就不用添加
}
}
}
}
public static MaYiApiService getApiService() {
Retrofit retrofit = new Retrofit.Builder().addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(mOkHttpClient) //传okhttp客户端
.baseUrl(BASE_URL) //传ip地址
.build();
return retrofit.create(MaYiApiService.class);
}
再封装下接口类就可以使用了,可能有些联网请求需要加上Header,如果用拦截器的话每个联网都带上了header,跟我的
需求不符,我自己手动添加的,有需要加头的自己写个拦截器就好了
下面是我写的接口类:
public interface WXApiService {
@GET("cgi-bin/token")
Flowable<WxTokenBean> getWxtoken(@Query("grant_type") String grant_type,
@Query("appid") String appid,
@Query("secret") String secret);
}
项目中使用
protected CompositeDisposable mDisposable = new CompositeDisposable();
protected WXApiService mWXApiService = RetrofitHelper.getApi();
mDisposable.add(mWXApiService.getWxMessage(mToken,body).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<ResponseBody>(){
@Override
public void accept(@NonNull ResponseBody responseBody) throws Exception {
Log.i("msg","成功");
}
}, new Consumer<Throwable>() {
@Override
public void accept(@NonNull Throwable throwable) throws Exception {
Log.i("msg","失败");
}
}));