/ / Unirest.delete () blocca qualsiasi ulteriore metodo Unirest, quando response.body è vuoto - java, unirest

Unirest.delete () blocca qualsiasi ulteriore metodo Unirest, quando response.body è vuoto - java, unirest

Usiamo Unirest 1.5.4 per java. Le risposte del nostro server alle chiamate DELETE con uno stato 204 - NO_CONTENT e un corpo di risposta vuoto. Quando eseguo la chiamata di cancellazione sincrona, le seguenti chiamate terminano in SocketTimeoutException.

Per un'indagine più approfondita, ho scambiato alcune righe nel server per rispondere allo stato 200 e un corpo "{}". Unirest funziona bene solo con questo hack sul lato server.

ecco il mio (non valido) codice Unirest client:

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();
}

risposte:

0 per risposta № 1

Sono riuscito a risolvere un problema simile impostandotimeout leggermente più alti dei valori predefiniti. Sembra che se si tenta di effettuare più connessioni a un servizio come MailChimp, ogni richiesta successiva richiede un po 'più di tempo. Prova a sperimentarlo un po '.

Unirest.setTimeouts(10000, 30000);