получить URL-адрес из-за ошибки в retrofit2 и rxjava - PullRequest
0 голосов
/ 16 октября 2018

Я использую модификацию 2 с rxjava для отправки запросов на отдых.и Gson как json parse.

, если Gson не может проанализировать строку json, то выдает java.lang.IllegalStateException с некоторым сообщением.моя проблема в том, что я не знаю, эта ошибка произошла, по какой ссылке.

если тип ошибки HttpException, я могу получить URL-адрес от этого, но в других типах, таких как java.lang.IllegalStateException и TimeoutException, доступен только доступ к сообщению об ошибке, и я не вижу URL-адрес.

как мне добиться URL в rxjava и модифицировать улов.

это мой код:

mainApi.getSomething(offset, limit, distance, latitude, longitude)
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({it:Response<Something>
                val entities = it.body()?.entities
                callBack.onResponse(it.raw(), entities)
            }, {//it:throwable
                if (t is HttpException) {
                   Log.d("logUrl", "HttpException : ${t.response().raw().request().url()} : ${t.code()} :${t.message()}")
                } else//something like IllegalStateException or TimeoutException
                     Log.d("logUrl", "Failure : ${t.localizedMessage}")
                })
               })

1 Ответ

0 голосов
/ 16 октября 2018

новый метод Consumer () всегда выдает сообщение об ошибке любого типа, даже если ошибка GSON

 mGetDeviceObserver.subscribeOn(Schedulers.newThread())
         .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer<RegData>() {
    @Override
    public void accept(@NonNull RegData mRegData) throws Exception {
    }
}, new Consumer<Throwable>() {
    @Override
    public void accept(@NonNull Throwable t) throws Exception {
       if(t instanceof HttpException){ Log.d("path",((HttpException) t).response().raw().request().url().url().toString()); }
    }
});
...