在Android中发生SocketTimeoutException时重复的请求

时间:2014-12-29 06:51:01

标签: java android android-networking

下面的代码设置与服务器的连接,当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(),但它没有帮助。任何人都可以解释"魔术的原因"重复请求以及如何解决此问题。

0 个答案:

没有答案