4

可能重复:
执行 readLine() 时套接字卡住

我写了 jar 库并想在我的 android 项目中使用它。这是该库中的一个重要方法:

private static String convertStreamToString(InputStream is) {
        /* is - it's the inputStream created from server response entity. 
        I use org.apache.http classes to communicate with server. */
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) { // <-- this line
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }

如果我使用我的库来构建 Java 小程序并在 PC 上运行它——这段代码可以很好地工作。

但是,如果我在 Android 应用程序中使用它并在模拟器或设备上运行它,它有时会(并非总是!)在标记线上停留很长时间。所以在这种情况下会发生 SockedTimeoutExceptions。

所以,我想知道原因。如果你能帮助我摆脱这个问题,那就太好了。

4

0 回答 0