Получение сессионных куки-файлов, как в браузере - PullRequest
0 голосов
/ 14 мая 2019

Я должен подключить свое приложение к sap-серверу и выполнить другие запросы.Однако я не могу получить все сессионные куки.Например, в Chrome после подключения я нашел эти 2 файла cookie: «MYSAPSSO2» и «SAP_SESSIONID_DAC_001».Но с приложением этот cookie "sap-login-XSRF_DAC", который такой же, как в браузере до подключения.Однако я получил сообщение 200 OK.

Итак, у вас есть решение?

Вот код.Ахттп init


        var builder = OkHttpClient.Builder()

        LOGGER.info("Initialising httpUtil with default configuration")
        if (ignoreCertificate) {
            ignoreSslCertificate = true
            builder = configureToIgnoreCertificate(builder)
        }

        return builder
            .followRedirects(true)
            .followSslRedirects(true)
            .retryOnConnectionFailure(true)
            .setCookieStore(context)
            .addNetworkInterceptor { chain ->
                val request = chain.request().newBuilder()
                    .header("User-Agent", userAgent)
                    .build()
                chain.proceed(request)
            }
            .cache(null)
            .connectTimeout(httpConnectTimeoutSeconds.toLong(), TimeUnit.SECONDS)
            .writeTimeout(httpWriteTimeoutSeconds.toLong(), TimeUnit.SECONDS)
            .readTimeout(httpReadTimeoutSeconds.toLong(), TimeUnit.SECONDS)
            .build()
    }

в CookieStore


    @JvmField
    val setCookieHeader = "Set-Cookie"

    @Throws(IOException::class)
    override fun intercept(chain: Interceptor.Chain): Response {
        val originalResponse = chain.proceed(chain.request())

        if (originalResponse.headers(setCookieHeader).isNotEmpty()) {
            val cookies = PreferenceManager
                .getDefaultSharedPreferences(context)
                .getStringSet(Constants.COOKIES_KEY, HashSet()) as HashSet<String>

            originalResponse.headers(setCookieHeader).forEach {
                cookies.add(it)
                Log.i("COOKIE", it)
            }

            PreferenceManager
                .getDefaultSharedPreferences(context)
                .edit()
                .putStringSet(Constants.COOKIES_KEY, cookies)
                .apply()
        }

        return originalResponse
 ```}

Okhttp get
```fun GET(url: String, params: HashMap<String, String>, callback: Callback): Call {
        val urlBuilder = HttpUrl.parse(url)!!.newBuilder()
        for (param in params) {
            urlBuilder.addQueryParameter(param.key, param.value)
        }
        val url1 = urlBuilder.build().toString()

        val request = Request.Builder()
            .url(url1)
            .build()

        val call = client.newCall(request)
        call.enqueue(callback)
        return call
 ```}
...