загрузить файл doc на Android с сервера

#java #android #sockets

#java #Android #сокеты

Вопрос:

привет, у меня есть документ word на сервере, который я хочу загрузить с Android. я использую следующий код

                URL url = new URL(aurl[0]);
               URLConnection conexion =  url.openConnection();
               conexion.setDoOutput(true);
               conexion.setConnectTimeout(60000);

               conexion.connect();

               int lenghtOfFile = conexion.getContentLength();
               Log.d("ANDRO_ASYNC", "Lenght of file: "   lenghtOfFile);

               InputStream input = new BufferedInputStream(conexion.getInputStream());
               OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory()   
                        "/abcd.doc");

                byte data[] = new byte[1024];

                long total = 0;

                while ((count = input.read(data)) != -1) {
                    total  = count;
                    publishProgress("" (int)((total*100)/lenghtOfFile));
                    output.write(data, 0, count);
                }

                output.flush();
                output.close();
                input.close();`
  

когда я пробую этот код с образцом ссылки flickr(http://farm1.static.flickr.com/114/298125983_0e4bf66782_b.jpg) это работает, но когда я пытаюсь использовать URL моего сервера, он не подключается.Однако файл загружается из браузера.Также может кто-нибудь сказать мне, в чем разница между двумя методами openConnection() и connect() ?

Обновить:

Он также отлично работает с нашим локальным хостом, но не на сервере. В logcat я вижу, что время запроса не удалось: семейство адресов не поддерживается. Что-то нужно установить для файлов Doc?

Ответ №1:

URL.openConnection(); подготавливает соединение к установке Подключение — это начало соединения, я думаю, извините, если я ошибаюсь.

JAVADOC ГОВОРИТ, что ЭТИ

connect() Открывает подключение к ресурсу. Этот метод не будет повторно подключаться к ресурсу после того, как первоначальное соединение было закрыто.

URL.openConnection() Открывает соединение с удаленным ресурсом, указанным по этому URL. Это соединение обеспечивает двунаправленную передачу данных.

надеюсь, это помогло

Ответ №2:

Возможно, вам потребуется установить тип содержимого для документов Word:

 Response.ContentType = "application/ms-word"; 
  

Но есть варианты в зависимости от версии.