implementation 'com.squareup.okhttp3:okhttp:4.0.0-RC1'
implementation 'com.squareup.okio:okio:2.2.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.9'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
//retrofit
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
//RxJava2 Adapter
implementation "com.squareup.retrofit2:adapter-rxjava2:2.4.0"
//okhttp
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
// 衔接 Retrofit & RxJava
// 此处一定要注意使用RxJava2的版本
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
// 支持Gson解析
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
public class MainActivity extends AppCompatActivity {
private static final String TAG = "Rxjava";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
//步骤4:创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://xxxxxxx/xx/xx") // 设置 网络请求 Url
.addConverterFactory( GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
.addCallAdapterFactory( RxJava2CallAdapterFactory.create()) // 支持RxJava
.build();
// 步骤5:创建 网络请求接口 的实例
GetRequest_Interface request = retrofit.create(GetRequest_Interface.class);
HashMap<String, String> infoMap = new HashMap<>();
infoMap.put("xx", "xxx");
infoMap.put("xx", "xx");
infoMap.put("xx", "xx");
infoMap.put("xx", "xx");
infoMap.put("xx", "xx");
// 步骤6:采用Observable<...>形式 对 网络请求 进行封装
Observable<ResponseBody> observable = request.getCall(infoMap);
// 步骤7:发送网络请求
observable.subscribeOn( Schedulers.io()) // 在IO线程进行网络请求
.observeOn( AndroidSchedulers.mainThread()) // 回到主线程 处理请求结果
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "开始采用subscribe连接");
}
@Override
public void onNext(ResponseBody result) {
// 步骤8:对返回的数据进行处理
Log.d(TAG, "请求成功");
// result.show() ;
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "请求失败");
}
@Override
public void onComplete() {
Log.d(TAG, "请求完成");
}
});
}
}
public interface GetRequest_Interface {
@POST("xxx")
Observable<ResponseBody> getCall(@Body HashMap<String, String> personInfo);
// 注解里传入 网络请求 的部分URL地址
// Retrofit把网络请求的URL分成了两部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里
// 如果接口里的url是一个完整的网址,那么放在Retrofit对象里的URL可以忽略
// 采用Observable<...>接口
// getCall()是接受网络请求数据的方法
}
android:usesCleartextTraffic="true"//允许http请求
<uses-permission android:name="android.permission.INTERNET" />