/ / Unirest.delete () bloque toute méthode Unirest supplémentaire lorsque response.body est vide - java, unirest

Unirest.delete () bloque toute méthode Unirest supplémentaire lorsque response.body est vide - java, unirest

Nous utilisons Unirest 1.5.4 pour Java. Notre serveur répond aux appels DELETE avec un état 204 - NO_CONTENT et un corps de réponse vide. Lorsque je fais un appel de suppression synchrone, les appels suivants se terminent par une exception SocketTimeoutException.

Pour une analyse plus approfondie, j'ai échangé quelques lignes sur le serveur pour répondre à l'état 200 et à un corps "{}". Seulement avec ce bidouillage côté serveur, Unirest fonctionne bien.

Voici mon code client (défaillant) 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();
}

Réponses:

0 pour la réponse № 1

J'ai réussi à résoudre un problème similaire en mettantdélais dépassant légèrement les valeurs par défaut. Il semble que si vous essayez d'établir plusieurs connexions à un service tel que MailChimp, chaque requête suivante prend un peu plus de temps. Essayez de l'expérimenter un peu.

Unirest.setTimeouts(10000, 30000);