Unirest.delete () блокирует любой дальнейший метод Unirest, когда response.body пуст

1

Мы используем 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();
}
  • 0
    Кстати, если это кому-то важно, я думаю, что OP имел в виду версию 1.4.5, а не 1.5.4.
Теги:
unirest

1 ответ

0

Мне удалось решить подобную проблему, установив тайм-ауты немного выше, чем значения по умолчанию. Похоже, если вы попытаетесь сделать несколько подключений к службе, например MailChimp, каждый последующий запрос занимает немного больше времени. Попытайтесь немного поэкспериментировать с ним.

Unirest.setTimeouts(10000, 30000);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню