Мы используем Unirest 1.5.4 для java. Ответы сервера на вызовы DELETE со статусом 204 - NO_CONTENT и пустой тело ответа. Когда я выполняю синхронный вызов delete, следующие вызовы завершаются в исключении SocketTimeoutException.
Для более глубокого исследования я поменял несколько строк на сервере, чтобы ответить на статус 200 и тело "{}". Только с этим серверным взломом Unirest отлично работает.
вот мой (неудачный) код клиента Unirest:
public static void main(String... args) throws UnirestException {
String baseUrl = "http://localhost:9010/orga/";
String orgaJson = "{}";
HttpResponse<String> postResponse = Unirest.post(baseUrl).body(orgaJson).asString();
System.out.println("POST status = " + postResponse.getStatus());
JSONObject orga = new JSONObject(postResponse.getBody());
String orgaId = orga.getJSONObject("_id").getString("$oid");
HttpResponse<String> deleteResponse = Unirest.delete(baseUrl+"{id}").routeParam("id", orgaId).asString();
System.out.println("DELETE status = " + deleteResponse.getStatus());
System.out.println("DELETE body = " + deleteResponse.getBody());
// the next call will cause a SocketTimeoutException
Unirest.post(baseUrl).body(orgaJson).asString();
}
Мне удалось решить подобную проблему, установив тайм-ауты немного выше, чем значения по умолчанию. Похоже, если вы попытаетесь сделать несколько подключений к службе, например MailChimp, каждый последующий запрос занимает немного больше времени. Попытайтесь немного поэкспериментировать с ним.
Unirest.setTimeouts(10000, 30000);