Java“Broken Pipe”错误(使用Unirest http包装器)

时间:2014-12-03 12:58:16

标签: java http post unirest mashape

我在Java应用程序中使用unirest http包装器(http://unirest.io/java.html)来发送http post请求。不幸的是,我不断收到“破管”错误:

com.mashape.unirest.http.exceptions.UnirestException: java.net.SocketException: Broken pipe
    com.mashape.unirest.http.exceptions.UnirestException: java.net.SocketException: Broken pipe
    at com.mashape.unirest.http.HttpClientHelper.request(HttpClientHelper.java:145)
    at com.mashape.unirest.request.BaseRequest.asString(BaseRequest.java:56)

我用来调用它的代码如下:

public static int doHTTPPostWithAdditionalHeaders(String data, String url, HashMap<String, String> additionalHeaders) {

    try {
        Unirest.setTimeouts(10000, 10000);
        HttpResponse<String> jsonResponse = Unirest.post(url)
                .headers(additionalHeaders)
                .body(data)
                .asString();

        return jsonResponse.getStatus();

    } catch (Exception e) {
        System.out.println("doHTTPPostWithAdditionalHeaders failed: "+e.toString());
    }
    return 0;
}

它大部分时间都可以工作,但是当我用很多请求锤击它时似乎失败了。你们有什么想法我可以解决这个问题,或者你们是否可以推荐一个更强大的解决方案?这个后期操作对我的应用程序至关重要。

1 个答案:

答案 0 :(得分:3)

看起来这是我发布的数据对于分配的超时来说太大的简单情况。

<强>旧

Unirest.setTimeouts(10000, 10000);

Unirest.setTimeouts(10000, 30000);