下面的代码设置与服务器的连接,当readTimeout值(val)到期时,抛出SocketTimeoutException(只是catch部分中的日志错误)但由于某种原因发送了重复的请求,并且在obvoiusy非常糟糕的服务器上执行了两个tranasction
System.setProperty("http.keepAlive", "false");
connection = (HttpURLConnection) endPoint.openConnection();
final String data = prepareRequestData();
final OutputStream os;
((HttpsURLConnection) connection).setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
connection.setReadTimeout(val);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
connection.setRequestProperty("Host", endPoint.getHost());
connection.setRequestProperty("Accept-Encoding", "gzip");
connection.setDoInput(true);
connection.setDoOutput(true);
os = connection.getOutputStream();
os.write(data.getBytes());
os.close();
尝试在catch部分调用connection.disconnet(),但它没有帮助。任何人都可以解释"魔术的原因"重复请求以及如何解决此问题。