У меня есть код, подобный следующему:
try {
HttpPost post = new HttpPost(httpsUrl);
setHeaders(post);
HttpEntity entity = new StringEntity(request, "UTF-8");
post.setEntity(entity);
HttpResponse response = httpclient.execute(post);
String result = EntityReader.readContent(response.getEntity());
checkAnswer(result);
return result;
} catch (Exception e) {
throw new ZapException("Error executing the http post request: "+e.getMessage(), e);
}
Он отправляет содержимое request
на сервер через POST, используя экземпляр httpclient, который, возможно, уже использовался ранее (у него включены постоянные соединения, поскольку мы отправляем довольно много запросов на тот же сервер ... ).
Это иногда завершается с ошибкой SocketTimeoutException
с "Read timed out" в качестве сообщения.
Нам непонятно, почему он терпит неудачу только в некоторых случаях, а в большинстве случаев - нет. Что дает?