ошибка конца ввода в строке 1 столбец 1 путь $ при модернизации kotlin - PullRequest
0 голосов
/ 03 апреля 2020

Я получил эту ошибку после того, как справился с приведенной ниже ошибкой в ​​ssl handshake

ps: я знаю, что это не исправление и я могу принять все сертификаты, но сейчас мне нужно просто получить приложение работает

javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x67a9e670: I/O error during system call, Connection reset by peer

Использую модификацию и охттп и php для бэкэнда

implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'

Я пробовал следующее:

  • изменить RequestSuccessful на void, и это фактически делает ошибку исчезающей, и я получил ответ об успешном завершении, но по некоторым причинам нет влияния на сервер или базу данных

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

функции запроса

    private fun payCash() {
    val balance = SessionManager(this).getBalance()

    val tk = TokenManager(this).loadToken().asBearerToken()

    if (tripPrice <= balance) {
        //  cashProgressBar.show()
        Timber.i("the request is ${PayCashRequest(paymentId.toString())}")
        cashProgressBar?.show()
        RetrofitClient.getInstance().api.payCash(
            PayCashRequest(paymentId.toString()),
            TokenManager(this).loadToken().asBearerToken()
        ).enqueue(object : Callback<RequestSuccessful> {
            override fun onFailure(call: Call<RequestSuccessful>, t: Throwable) {
                Timber.i("trowableerror ${t.message} and ${t.cause} stack trace {${t.stackTrace.iterator()}}")
                cashProgressBar.gone()
                paymentRootView.errorSnackBar(R.string.something_went_wrong)
            }

            override fun onResponse(
                call: Call<RequestSuccessful>,
                response: Response<RequestSuccessful>
            ) {
                cashProgressBar.gone()
                if (response.isSuccessful) {
                    Timber.i("Respnse is Done")
                    startActivity(Intent(applicationContext, BookingActivity::class.java))
                    finish()
                } else if (response.code() == 302) {
                    val sessionManager: SessionManager by inject()
                    sessionManager.logoutUser(false)
                } else {
                    Timber.i("error ${response.code()}")
                    paymentRootView.errorSnackBar(R.string.you_don_t_have_enouph_blanace)
                }
            }

        })
    } else {
        Timber.i("error no enouch cash here ")
        paymentRootView.errorSnackBar(R.string.you_don_t_have_enouph_blanace)
    }
}

Okhttp клиент Builder

    private fun okHttpClient(): OkHttpClient.Builder {

    if (com.adeeela.BuildConfig.DEBUG) {
        loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
    } else {
        loggingInterceptor.level = HttpLoggingInterceptor.Level.NONE
    }

    return OkHttpClient.Builder().addInterceptor(loggingInterceptor)
        //   .addInterceptor(authInterceptor(token))
        .followRedirects(false)
        .followSslRedirects(false)
        .readTimeout(30, TimeUnit.SECONDS)
        .connectTimeout(30, TimeUnit.SECONDS)
        .retryOnConnectionFailure(false)
        .apply {
            val trustManager by lazy {
                val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
                trustManagerFactory.init(null as KeyStore?)
                trustManagerFactory.trustManagers.first { it is X509TrustManager } as X509TrustManager
            }
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
                try {
                    val sc = SSLContext.getInstance(TlsVersion.TLS_1_1.javaName())
                    sc.init(null, WebAccess.trustAllCerts, null)
                    sslSocketFactory(MySslFactory(sc.socketFactory), trustManager)

                    val cs = ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
                        .tlsVersions(*MySslFactory.ALLOWED_TLS_VERSIONS)
                        .build()

                    val specs = ArrayList<ConnectionSpec>()
                    specs.add(cs)
                    specs.add(ConnectionSpec.COMPATIBLE_TLS)
                    specs.add(ConnectionSpec.CLEARTEXT)

                    connectionSpecs(specs)
                } catch (exc: Exception) {
                    Log.e("OkHttpTLSCompat", "Error while setting TLS 1.1 and 1.2", exc)
                }
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...