build.gradle:
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'io.reactivex:rxandroid:1.2.1'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
...
相关配置管理类RetrofitManager.java:
...
ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context));
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
File file = new File(context.getExternalCacheDir(), HTTP_RESPONSE_CACHE);
Cache cache = new Cache(file, HTTP_RESPONSE_DISK_CACHE_MAX_SIZE);
mOkHttpClient = new OkHttpClient.Builder()
//.addInterceptor(interceptor)
.addNetworkInterceptor(interceptor)
.readTimeout(TIMEOUT_READ, TimeUnit.SECONDS)
.connectTimeout(TIMEOUT_CONNECTION, TimeUnit.SECONDS)
.cookieJar(cookieJar)
.cache(cache)
.build();
mRetrofit = new Retrofit.Builder()
//.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(JsonConverterFactory.create())
// RxAndroid实现
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(Config.BASEURL)
.client(mOkHttpClient)
.build();
...
接口文件UserApi.java:
public interface UserApi {
...
@FormUrlEncoded
@POST("login")
Observable<JSONObject> login(@Field("username") String username, @Field("pwd") String pwd);
...
}
MainActivity.java中具体实现:
/**
* RxAndroid实现
*/
RetrofitManager.getInstace(this).create(UserApi.class).login("username", "pwd")
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(new Subscriber<JSONObject>() {
@Override
public void onStart() {
Log.e("fff", "-------onStart=====");
}
@Override
public void onCompleted() {
Log.e("fff", "-------onCompleted=====");
}
@Override
public void onError(Throwable e) {
Log.e("fff", "-------onError=====" + NetworkErrorHelper.getMessage(e));
}
@Override
public void onNext(JSONObject jsonObject) {
Log.e("fff", "-------onNext=====" + jsonObject.toString());
}
});
Ok, finish()!