2012-03-17 3 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) 

Я узнал, если сервер поддерживает резюме, и это делает, я узнал об этом, проверяя réponse Accept-Range, как предложил Nuvaak.

ответ

1

Я не думаю, что строка приведет к сбою вашей программы, если сервер не поддерживает заголовок Range, он просто проигнорирует его.

На вопрос, возможно, потребуется оформить дополнительное подключение и проверить заголовок ответа Accept-Ranges, если его значение bytes, вам повезло, что он поддерживает хедер Range запрос, если это none, то не попробовать ,

+0

Я попробовал то, что вы сказали, и значение действительно байтов, однако всякий раз, когда я раскомментирую строку, я получаю исключение filenot – brux

+0

Это исключение не имеет ничего общего с заголовком 'Range', checkout javadoc для FileOutputStream для получения дополнительной информации о исключение. http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File, boolean) – neevek

+0

, что означает, что что-то не так с file.size() , а не с вашим подключением. – zapl

Смежные вопросы