关于rxjava中,有些地址虽然在网页上能

关于rxjava中,有些地址虽然在网页上能获取到json数据,但是retrofit2+rxjava2不能正常解析。
例子一:报了 HTTP 403 Forbidden错误

http://api.m.mtime.cn/PageSubArea/TrailerList.api
 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() {
                    @Override
                    public void accept(@NonNull DoubanBook doubaiRoot) throws Exception {
//                        Toast.makeText(MainActivity.this, "获取成功"+doubaiRoot.getTrailers(), Toast.LENGTH_SHORT)
//                                .show();
                text.setText(doubaiRoot.getTrailers().get(0).getSummary().toString());
                    }
                }, new Consumer() {
                    @Override
                    public void accept(@NonNull Throwable throwable) throws Exception {
                        Log.e("MainActivity", throwable.getMessage());
                    }
                });
//        call.enqueue(new Callback() {
//            @Override
//            public void onResponse(Call call, Response response) {
//                Toast.makeText(MainActivity.this, "获取成功"+response.body(), Toast.LENGTH_SHORT).show();
////                text.setText(response.body().toString());
//            }
//
//            @Override
//            public void onFailure(Call call, Throwable t) {
//                Log.e("MainActivity", t.getMessage());
//            }
//        });
    }

    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.getDouban1("TrailerList.api")
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer() {
                    @Override
                    public void accept(@NonNull DoubanBook doubanBook) throws Exception {
                        Toast.makeText(MainActivity.this, "获取成功"+doubanBook.getTrailers(), Toast.LENGTH_SHORT).show();
                        text.setText(doubanBook.toString());
                        text.setText(doubanBook.getTrailers().get(0).getSummary());
                    }
                }, new Consumer() {
                    @Override
                    public void accept(@NonNull Throwable throwable) throws Exception {
                        Toast.makeText(MainActivity.this, "获取失败,请检查网络是否畅通", Toast.LENGTH_SHORT).show();
                    }
                });
//                .subscribe(new Consumer() {
//                    @Override
//                    public void accept(@NonNull DoubanBook doubanBook) throws Exception {
//                        Toast.makeText(MainActivity.this, "获取成功", Toast.LENGTH_SHORT).show();
//                        Log.e("MainActivity", doubanBook.toString());
//                    }
//                });
//                .subscribe(new Subscriber() {
//                    @Override
//                    public void onSubscribe(Subscription s) {
//                        s.request(Long.MAX_VALUE);
//                    }
//
//                    @Override
//                    public void onNext(DoubanBook doubanBook) {
//                        Toast.makeText(MainActivity.this, "获取成功"+doubanBook.getTrailers(), Toast.LENGTH_SHORT).show();
////                        text.setText(doubanBook.toString());
////                        text.setText(doubanBook.getTrailers().get(0).getSummary());
//                    }
//
//                    @Override
//                    public void onError(Throwable t) {
//                        t.printStackTrace();
//                        Toast.makeText(MainActivity.this, "获取失败,请检查网络是否畅通", Toast.LENGTH_SHORT).show();
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });
    }

例子二:
报了Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1错误

http://v.juhe.cn/nba/all_team_info.php?key=ffe36f382253dde1ead7a592178a9454
@Override
    public void getNba() {
        subscription = ApiManager.getNbAapi()
                .getNBA("98020a1e920819b8ff4fcfbdd7747f8c")
//                .getNBA()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer() {
                    @Override
                    public void accept(@NonNull NBA nba) throws Exception {
                        List list = new ArrayList<>();
                        List list1 = nba.getResult().getList();
                        for (NBA.ResultBean.ListBean listBean : list1) {
                            list.addAll(listBean.getTr());
                        }
                        nbaiView.setData(list);
                    }
                }, new Consumer() {
                    @Override
                    public void accept(@NonNull Throwable throwable) throws Exception {
                        Log.e("NBAIpresenterImpl", throwable.getMessage());
                    }
                }, new Action() {
                    @Override
                    public void run() throws Exception {

                    }
                });
    }






你可能感兴趣的:(关于rxjava中,有些地址虽然在网页上能)