我在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;
}
它大部分时间都有效,但当我用大量请求敲打它时似乎失败了。你们中有人对我如何解决这个问题有任何想法,或者您能否推荐一个更强大的解决方案?此后操作对我的应用程序至关重要。
看起来这是我
发布的数据对于分配的超时来说太大的简单情况。
老
Unirest.setTimeouts(10000, 10000);
新增功能
Unirest.setTimeouts(10000, 30000);