美文网首页
retrofit2中关于baseUrl问题(一)

retrofit2中关于baseUrl问题(一)

作者: 墨色尘埃 | 来源:发表于2017-07-05 11:04 被阅读0次

    http://api.m.mtime.cn/PageSubArea/TrailerList.api
    两种解析方法,一种失败还有一种成功。

    组合一://失败
    baseUrl("http://api.m.mtime.cn/PageSubArea/TrailerList.api/")
    @GET("/")
    Observable<DoubanBook> getDouban(); 
    
    组合二://成功
    baseUrl("http://api.m.mtime.cn/")
    @GET("PageSubArea/{address}") 
    Observable<DoubanBook> getDouban1(@Path("address")String address); 
    
    组合三://成功
    baseUrl("http://api.m.mtime.cn/")
    @GET("PageSubArea/TrailerList.api")
    Observable<DoubanBook> getDouban2();  
    
    组合四://成功
    baseUrl("http://api.m.mtime.cn/PageSubArea/")
    @GET("TrailerList.api")
    Observable<DoubanBook> getDouban3();  
    
    组合五://成功
    baseUrl("http://api.m.mtime.cn/PageSubArea/")
    @GET("{address}")
    Observable<DoubanBook> getDouban4(@Path("address")String address); 
    

    失败,还没搞懂什么原因,可能是baseUrl里的部分是全的吧?

    public void getDoubanBook() { //失败,可能是解析json出问题了?? response为空  HTTP 403 Forbidden
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("http://api.m.mtime.cn/PageSubArea/TrailerList.api/")
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            BaiDuService service = retrofit.create(BaiDuService.class);
            service.getDouban()
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe( new Consumer<DoubanBook>() {
                        @Override
                        public void accept(@NonNull DoubanBook doubaiRoot) throws Exception {
                            text.setText(doubaiRoot.getTrailers().get(0).getSummary().toString());
                        }
                    }, new Consumer<Throwable>() {
                        @Override
                        public void accept(@NonNull Throwable throwable) throws Exception {
                            Log.e("MainActivity", throwable.getMessage());
                        }
                    });
    
    //        call.enqueue(new Callback<DoubaiRoot>() {
    //            @Override
    //            public void onResponse(Call<DoubaiRoot> call, Response<DoubaiRoot> response) {
    //                Toast.makeText(MainActivity.this, "获取成功"+response.body(), Toast.LENGTH_SHORT).show();
    ////                text.setText(response.body().toString());
    //            }
    //
    //            @Override
    //            public void onFailure(Call<DoubaiRoot> call, Throwable t) {
    //                Log.e("MainActivity", t.getMessage());
    //            }
    //        });
        }
    

    成功

    // TODO: 2017/7/5 终于解决这个问题了,gsonformat生成的实体类中 rating参数有误,改为double型即可
        public void getDoubanBook1() { //失败 -->成功
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("http://api.m.mtime.cn/")
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            BaiDuService service = retrofit.create(BaiDuService.class);
            service
                    .getDouban2()                 //成功
    //                .getDouban1("TrailerList.api")  //成功
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Consumer<DoubanBook>() {
                        @Override
                        public void accept(@NonNull DoubanBook doubanBook) throws Exception {
                            Toast.makeText(MainActivity.this, "获取成功" + doubanBook.getTrailers(), Toast.LENGTH_SHORT).show();
                            text.setText(doubanBook.getTrailers().get(0).getSummary());
                        }
                    }, new Consumer<Throwable>() {
                        @Override
                        public void accept(@NonNull Throwable throwable) throws Exception {
                            Log.e("MainActivity", throwable.getMessage());
                        }
                    });
        }
    

    BaiDuService

        @GET("/") //如果这里参数,则最前面要加斜杠
        Observable<DoubanBook> getDouban(); //失败
    
        @GET("PageSubArea/{address}")
        Observable<DoubanBook> getDouban1(@Path("address")String address); //成功
    
        @GET("PageSubArea/TrailerList.api")
        Observable<DoubanBook> getDouban2();  //成功
    
        @GET("TrailerList.api")
        Observable<DoubanBook> getDouban3();  //成功
    
    //    @GET("/{address}") //如果这里参数,则最前面不要加斜杠
        @GET("{address}")
        Observable<DoubanBook> getDouban4(@Path("address")String address);  //成功
    

    相关文章

      网友评论

          本文标题:retrofit2中关于baseUrl问题(一)

          本文链接:https://www.haomeiwen.com/subject/gnofhxtx.html