• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Ocean123123
博客园    首页    新随笔    联系   管理    订阅  订阅

retrofit使用

    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" />

 

posted @ 2020-10-29 15:21  Ocean123123  阅读(149)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3