#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";
Но есть варианты в зависимости от версии.