2012-03-17 55 views
1

使用HTTPUrlConnection下载文件时有一种方法可以在尝试恢复文件下载之前检查服务器是否支持恢复?HTTPUrlConenction检查服务器是否支持恢复

要么我做错了什么错误的服务器不支持简历,我怎么能先检查?

File file = new File(Environment.getExternalStorageDirectory()+"/dir/", filename); 
       if (file.exists()) { 
      crashes here--->   //c.setRequestProperty("Range", "Bytes="+(file.length())+"-"); 

        Log.d("file already exists", filename); 
       } 
       c.setDoOutput(true); 
       c.setDoInput(true); 
       c.connect(); 

       f = new FileOutputStream(new File(PATH_op), true);//set true so if file exists it will append 

logcat的

03-17 14:55:23.746: WARN/System.err(11196):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521) 

我发现,如果服务器支持的简历,这样做,我发现了这一点,通过检查接受,范围效应初探作为Nuvaak建议。

回答

1

我不认为这条线会导致您的程序崩溃,如果服务器不支持Range标题,它会简单地忽略它。

对于这个问题,您可能需要发出一个额外的连接,并检查响应头Accept-Ranges,如果它的值是bytes,你是幸运的,它支持Range请求头,如果它是none,那么不要尝试。

+0

我尝试了你说的和值的确是字节,但是每当我取消注释行时,我得到一个文件没有发现异常 – brux 2012-03-17 16:30:41

+0

该异常与'Range'头文件无关,为FileOutputStream检出javadoc以获取更多关于例外。 http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File,布尔值) – neevek 2012-03-17 16:39:54

+0

这意味着file.size()有问题,而不是与你的连接。 – zapl 2012-03-17 16:40:40