getResponseCode天气超时也没有读取响应

时间:2016-07-05 13:26:38

标签: android sockets timeout httpurlconnection

我有一个Android应用程序,它可以将一些json数据上传到PHP脚本,该脚本将数据存储在数据库中。

    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    try {
        connection.setDoOutput(true);
        connection.setInstanceFollowRedirects(false);
        connection.setRequestMethod("PUT");
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("charset", "utf-8");
        connection.setFixedLengthStreamingMode(bytes.length);
        connection.setReadTimeout(3000000);
        long tim = System.currentTimeMillis();
        connection.getOutputStream().write(bytes);
        connection.getOutputStream().flush();
        if (connection.getResponseCode() != 200) {
            long dur = System.currentTimeMillis() - tim;
            String response = IOUtils.toString(connection.getInputStream(), "UTF-8");
            throw new IOException(connection.getResponseCode() + " " + response);
        }
    } finally {
        connection.disconnect();
    }

数据到达脚本,脚本将数据存储到数据库中。

当客户端上传大量数据时,请求大约需要15分钟,但它已完成。数据完整地写入数据库,php脚本发送响应。

但是当需要那么长时间时,getResponseCode()函数永远不会返回。当我在调试器中点击暂停时,它会显示以下堆栈:

Stack

知道什么是错误的吗?

我正在API级别23上运行模拟器。

似乎连接丢失但android没有检测到它。

0 个答案:

没有答案
相关问题