当response.body为空时,Unirest.delete()会阻止任何进一步的Unirest方法

时间:2015-03-30 18:36:19

标签: java unirest

我们使用Unirest 1.5.4 for java。我们的服务器对DELETE调用的响应具有204 - NO_CONTENT状态和空响应体。 当我执行同步删除调用时,以下调用将以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();
}

1 个答案:

答案 0 :(得分:0)

我设法通过设置略高于默认值的超时来解决类似的问题。看起来如果您尝试与MailChimp之类的服务建立多个连接,则每个后续请求都需要花费更多时间。尝试尝试一下。

Unirest.setTimeouts(10000, 30000);