Как повторно использовать соединение HTTP keep-alive через okHttp?Java okHttp reuse keep-alive connection
Мой пример кода:
public class MainWithOkHttp {
static OkHttpClient _client = new OkHttpClient();
public static void main(String[] args) {
...
query1();
...
// in this request
Request _request = new Request.Builder()
.url("...")
.addHeader("connection", "keep-alive")
.addHeader("cookie", _cookie)
.post(postParams)
.build();
// in this request my previous session is closed, why?
// my previous session = session created in query1 method
Response _response = _client.newCall(_request).execute();
...
}
...
private static void query1() {
...
Request request = new Request.Builder()
.url("...")
.addHeader("connection", "keep-alive")
.addHeader("cookie", _cookie)
.get()
.build();
Response _response = _client.newCall(request).execute();
...
}
...
}
Итак, я звоню query1()
метод. В этом методе соединение открыто, сеанс на стороне сервера создан и cookie с полученным sessionId.
Но, когда я выполняю другой запрос на сервер, мое предыдущее соединение не используется, а сеанс на сервере уже закрыт. Срок службы сеанса на сервере невелик, поэтому проблема не в жизни.
PS: Я получаю captcha с сервера и распознаю код captcha, а затем выполняю запрос с кодом captcha на сервер. Но captcha на стороне сервера не распознается, потому что сессия уже закрыта и код captcha хранится в сеансе.
любая работа вокруг? –
Я столкнулся с той же проблемой в Android. вы нашли решение еще? –
К сожалению нет. – Vusal