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

retrofit(2)get请求

public class MainActivity extends AppCompatActivity {
// URL模板
   // http://fy.iciba.com/ajax.php

// URL实例
            //http://fy.iciba.com/ajax.php?a=fy&f=auto&t=auto&w=hello%20world

    // 参数说明:
// a:固定值 fy
// f:原文内容类型,日语取 ja,中文取 zh,英语取 en,韩语取 ko,德语取 de,西班牙语取 es,法语取 fr,自动则取 auto
// t:译文内容类型,日语取 ja,中文取 zh,英语取 en,韩语取 ko,德语取 de,西班牙语取 es,法语取 fr,自动则取 auto
// w:查询内容

    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://fy.iciba.com/ajax.php/") // 设置 网络请求 Url
                    .addConverterFactory( GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
                    .addCallAdapterFactory( RxJava2CallAdapterFactory.create()) // 支持RxJava
                    .build();

            // 步骤5:创建 网络请求接口 的实例
            final GetRequest_Interface request = retrofit.create(GetRequest_Interface.class);

            // 步骤6:采用Observable<...>形式 对 网络请求 进行封装
            Observable<Translation> observable = request.getCall();

            // 步骤7:发送网络请求
            observable.subscribeOn( Schedulers.io())               // 在IO线程进行网络请求
                    .observeOn( AndroidSchedulers.mainThread())  // 回到主线程 处理请求结果
                    .subscribe(new Observer<Translation>() {
                        @Override
                        public void onSubscribe(Disposable d) {
                            Log.d(TAG, "开始采用subscribe连接");
                        }

                        @Override
                        public void onNext(Translation result) {
                            // 步骤8:对返回的数据进行处理
                            Log.d(TAG, "请求成功"+request);
                            result.show() ;
                        }

                        @Override
                        public void onError(Throwable e) {
                            Log.d(TAG, "请求失败");
                        }

                        @Override
                        public void onComplete() {
                            Log.d(TAG, "请求完成");
                        }
                    });
        }
}
public interface GetRequest_Interface {

    @GET("ajax.php?a=fy&f=auto&t=auto&w=hello%20world")
    Observable<Translation> getCall();
    // 注解里传入 网络请求 的部分URL地址
    // Retrofit把网络请求的URL分成了两部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里
    // 如果接口里的url是一个完整的网址,那么放在Retrofit对象里的URL可以忽略
    // 采用Observable<...>接口
    // getCall()是接受网络请求数据的方法
}
public class Translation {
    private int status;

    private content content;
    private static class content {
        private String from;
        private String to;
        private String vendor;
        private String out;
        private int errNo;
    }

    //定义 输出返回数据 的方法
    public void show() {
        System.out.println( "Rxjava翻译结果:" + status);
        System.out.println("Rxjava翻译结果:" + content.from);
        System.out.println("Rxjava翻译结果:" + content.to);
        System.out.println("Rxjava翻译结果:" + content.vendor);
        System.out.println("Rxjava翻译结果:" + content.out);
        System.out.println("Rxjava翻译结果:" + content.errNo);
    }
}

 Rxjava的map函数传入一个带两个参数的泛型,第一个泛型是规定的返回值,第二个泛型是对第一个泛型的映射,也就是解析第一个泛型然后返回回去.

Rxjava的compose函数规定线程运行的规则,简化代码

 //处理线程调度的变换
    public static ObservableTransformer schedulersTransformer = new ObservableTransformer() {
        @Override
        public ObservableSource apply(Observable upstream) {
            return ((Observable) upstream).subscribeOn(Schedulers.io())
                    .unsubscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread());
        }
    };
Observable.compose(schedulersTransformer)
 

 

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