如何使用HttpURLConnection管理丢失的连接?

时间:2013-07-13 09:10:22

标签: android httpurlconnection

我有Service使用HttpURLConnection管理下载任务。

我在执行任何HTTP请求之前使用自定义isNetworkAvailable方法,但我想知道如何管理请求期间丢失的连接。

我应该在isNetworkAvailable循环中调用while方法(这意味着有很多来电)吗?使用HttpURLConnection来管理连接丢失的标准方法是什么?

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

FileOutputStream outputStream = openFileOutput(filename, MODE_PRIVATE | MODE_APPEND);               

BufferedInputStream in = new BufferedInputStream(connection.getInputStream());

byte[] data = new byte[1024];
int x = 0;

while ((x = in.read(data, 0, 1024)) >= 0) {
    outputStream.write(data, 0, x);
}

1 个答案:

答案 0 :(得分:1)

我建议捕获IOException,如果发生,请为用户提供重试或取消的选项。您可能希望使用setConnectTimeou t(请参阅HttpURLConnection timeout question以获取如何使用它的示例)以确保在合理的时间内出错。

作为随机评论 - 如果您正在将数据读入相当大的缓冲区,就像您在这里一样,使用BufferedInputStream几乎没有意义;只需直接使用connection.getInputStream()返回的输入流。使用BufferedInputStream的唯一原因是,如果您正在阅读小块,例如一次一个字节。