Я должен подключить свое приложение к 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
```}