可能没有得到HttpUrlConnection的回复?

时间:2016-09-20 12:34:41

标签: android httpurlconnection

我尝试在我的应用完成后将缓存数据发布到服务器。 如果我得到肯定的回复(200,HTTP_OK),我将删除缓存的数据。

如果状态代码不同,或者在请求期间可能发生任何异常(MalformedURLExceptionUnknownHostExceptionIOException甚至Exception),我会保留缓存数据。

如果应用程序恢复并且缓存的数据仍然存在,我将尝试再次发送它。

在极少数情况下,我在服务器上发现重复数据,表明缓存数据已发送两次。我想知道这是怎么可能的。

这是使用Thread(Runnable)实现的。 Runnable使用HttpURLConnection发送帖子,如下所示(简化):

private void run() {
    try {
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Accept-Encoding", "gzip, deflate");

        OutputStream out = conn.getOutputStream();
        out.write(myCacheDataString);
        out.flush();
        out.close();

        int httpStatusCode = conn.getResponseCode();

        conn.disconnect();

        if (httpStatusCode == 200) {
            // Okay! delete cache
        } else {
            // Not okay. Keep Cache
        }
    } catch (MalformedURLException e) {
        // Not okay. Keep Cache
    } catch (UnknownHostException e) {
        // Not okay. Keep Cache
    } catch (IOException e1) {
        // Not okay. Keep Cache
    } catch (Exception e) {
        // Not okay. Keep Cache
    }
}

您必须相信我的缓存策略正在运行,并且服务器正在响应我的POST。

我的客户是否以任何可能的方式"缺少"来自服务器的200响应?

[编辑]:minSdkVersion为10

0 个答案:

没有答案