Добавление перехватчика OkHttpClient заставляет запрос выполняться несколько раз - PullRequest
0 голосов
/ 26 апреля 2020

Я пытался добавить refre sh токен-перехватчик к http-клиенту

public class AuthInterceptor implements Interceptor {
private Disposable disposable;

@Override
public Response intercept(@NonNull Chain chain) throws IOException {
    Request request = chain.request();

    Response response = chain.proceed(request);

//        if (response.code() == HttpURLConnection.HTTP_UNAUTHORIZED) {
//
//            synchronized (chain) {
//
//
//                RefreshTokenApi refreshTokenApi = new RefreshTokenApi();
//                disposable = refreshTokenApi.call().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(
//                        (tokenResponse, throwable) -> {
//
//                            PreferencesWrapperImpl.SINGLETON.putStringForKey(tokenResponse.getResponse().header(Constants.AUTH_TOKEN), Constants.PreferenceKey.AUTH_TOKEN_KEY);
//                            Log.e("throwable", throwable.getMessage());
//
//                        });
//
//
//                Request newRequest = request.newBuilder()
//                        .removeHeader(Constants.AUTH_TOKEN)
//                        .addHeader(Constants.AUTH_TOKEN, PreferencesWrapperImpl.SINGLETON.getStringForKey(Constants.PreferenceKey.AUTH_TOKEN_KEY, null))
//                        .build();
//                response = chain.proceed(newRequest);
//            }
//        }
        return response;
    }
}

, затем я обнаружил, что запрос выполняется много раз, поэтому я подумал, что, возможно, мои синхронизированные логи c неверны, и это что вызвало многократный запрос, поэтому я прокомментировал синхронизированные логи c, но на самом деле запрос все еще происходит много раз

, и вот мой logcat

D/OkHttp: --> POST http://134.209.26.2:88/api/common/version/check http/1.1

D / OkHttp:

 --> POST http://134.209.26.2:88/api/common/version/check http/1.1
    Content-Type: application/json; charset=utf-8
    Content-Length: 35
D/OkHttp: Content-Type: application/json; charset=utf-8
    Content-Length: 35
D/OkHttp: Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMzQuMjA5LjI2LjI6ODhcL2FwaVwvc3BcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNTg3NjQxMjY5LCJleHAiOjE1ODc2NzcyNjksIm5iZiI6MTU4NzY0MTI2OSwianRpIjoiZThXQUpIenVSamdGOGpORyIsInN1YiI6MTMsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEiLCJwaWQiOjUsInR5cGUiOjF9.sA3-Ga9YI-4AyDZV_KIuOukONu3Abblq6ge8JbaMgp8
    x-lang-code: en-us
D/OkHttp: Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMzQuMjA5LjI2LjI6ODhcL2FwaVwvc3BcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNTg3NjQxMjY5LCJleHAiOjE1ODc2NzcyNjksIm5iZiI6MTU4NzY0MTI2OSwianRpIjoiZThXQUpIenVSamdGOGpORyIsInN1YiI6MTMsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEiLCJwaWQiOjUsInR5cGUiOjF9.sA3-Ga9YI-4AyDZV_KIuOukONu3Abblq6ge8JbaMgp8
D/OkHttp: x-user-type: 1
D/OkHttp: x-lang-code: en-us
    x-user-type: 1
D/OkHttp: {"user_platform":1,"version":"1.0"}
    --> END POST (35-byte body)
D/OkHttp: {"user_platform":1,"version":"1.0"}
    --> END POST (35-byte body)
D/OkHttp: <-- 200 OK http://134.209.26.2:88/api/common/version/check (446ms)
D/OkHttp: Date: Sat, 25 Apr 2020 22:01:29 GMT
    Server: Apache/2.4.29 (Unix) OpenSSL/1.0.2n PHP/7.2.1 mod_perl/2.0.8-dev Perl/v5.16.3
D/OkHttp: <-- 200 OK http://134.209.26.2:88/api/common/version/check (447ms)
D/OkHttp: Vary: Authorization
D/OkHttp: Date: Sat, 25 Apr 2020 22:01:29 GMT
D/OkHttp: X-Powered-By: PHP/7.2.1
D/OkHttp: Server: Apache/2.4.29 (Unix) OpenSSL/1.0.2n PHP/7.2.1 mod_perl/2.0.8-dev Perl/v5.16.3
D/OkHttp: Cache-Control: no-cache, private
D/OkHttp: Vary: Authorization
D/OkHttp: Content-Length: 46
D/OkHttp: X-Powered-By: PHP/7.2.1
D/OkHttp: Keep-Alive: timeout=5, max=100
D/OkHttp: Cache-Control: no-cache, private
D/OkHttp: Connection: Keep-Alive
D/OkHttp: Content-Length: 46
D/OkHttp: Content-Type: application/json
D/OkHttp: Keep-Alive: timeout=5, max=100
    Connection: Keep-Alive
    Content-Type: application/json
    {"data":{"status":1,"min":null,"latest":null}}
D/OkHttp: {"data":{"status":1,"min":null,"latest":null}}
    <-- END HTTP (46-byte body)
D/OkHttp: <-- END HTTP (46-byte body)
E/APP_UPDATES: onSuccess

я использую перехватчик ведения журнала, чтобы вы видели первый запрос приложения, который много раз обновлялся после публикации

...