HttpURLConnection在某些设备上超时 - 非常神秘的行为

时间:2017-03-06 05:45:00

标签: java android timeout httpurlconnection android-networking

我有一个依赖于发出POST / GET请求的应用。我的应用程序正在同一个wifi网络上的各种设备上进行测试。

在某些设备上,我获得了HttpURLConnection的标准超时异常。

以下是发生超时的地方:

HttpURLConnection conn = (HttpURLConnection) ((new URL(
                    getString(R.string.base_url) + "/getnumbers").openConnection()));
            conn.setDoOutput(true);
            conn.setConnectTimeout(MainActivity.CONNECT_TIMEOUT_MS);
            conn.setReadTimeout(MainActivity.READ_TIMEOUT_MS);
            conn.setRequestProperty("Cookie", prefs.getString("sessionid", ""));
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("Accept", "application/json");

            conn.setRequestMethod("POST");

            conn.connect();


            JSONObject progress = new JSONObject();
            try {
                progress.put("username", prefs.getString("username", ""));
            } catch (JSONException e) {
                e.printStackTrace();
            }  

            // posting it
            Writer wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(progress.toString());
            wr.flush();
            wr.close();

            is = conn.getResponseCode() >= 400 ? conn.getErrorStream() :
                    conn.getInputStream();

此应用适用于以下设备:

  • 三星Galaxy S4 Verizon 5.0.1

  • 三星Galaxy S5 Verizon 6.0.1

  • 三星Galaxy S7 AT& T 6.0.1

  • 三星Galaxy S7 Verizon 6.0.1

  • 三星Galaxy S7 Edge Verizon 6.0.1

  • BLU R1 HD N / A 6.0.1

  • Galaxy Tab S2

  • LG G4 Verizon 6.0.1

  • LG G2 Verizon 5.1.1
  • Google Pixel At& t 7.1.1
  • Sony Xperia Z Ultra Verizon 5.1.1

以下是导致超时问题的设备列表:

  • LG Tribute HD No Plan 6.0.1

  • LG V10 Verizon 6.0.1

  • LG Zone 3 5.1.1

  • Samsung Note 4 ATT& T 6.0.1

我尝试通过延长超时持续时间和执行System.setProperty(“http.keepAlive”,“false”)来修复超时问题。这些措施都没有帮助。

考虑到在同一个Wifi网络上发生超时,我相当确定该问题是由供应商特定的英国媒体报道软件或其他一些设备/供应商/运营商特定问题引起的。

任何人都可以分享他们的想法,以了解可能导致这种情况的原因吗?

java.net.SocketTimeoutException

W / System.err:at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)  W / System.err:at java.net.PlainSocketImpl.access $ 000(PlainSocketImpl.java:37) W / System.err:at java.net.PlainSocketImpl $ PlainSocketInputStream.read(PlainSocketImpl.java:237)

1 个答案:

答案 0 :(得分:-1)

好的,所以通过Play Store发布应用程序似乎解决了(至少)其中一个设备(最近更新到6.0.2的Note 4)的问题。

因此,当直接安装APK时,某些设备似乎会超时,但在通过Play商店安装时可以正常工作。

相关问题