2012-03-04 2 views
-1

Я пишу приложение для Android, которое имеет функцию загрузки данных в сервлет, и когда я говорю данные, я имею в виду много строк. Сервлет работает в Apache Tomcat v6 и написан на Java. Везде, где я смотрю, я вижу, что один из способов сделать это - использовать HttpUrlConnection.Как отправить большой объем данных на сервлет

стороне клиента:

URL u = new URL("http://servlet location"); 
HttpURLConnection httpCon = (HttpURLConnection) u.openConnection(); 
httpCon.setRequestMethod("GET"); 
httpCon.setDoOutput(true); 
httpCon.setDoInput(true); 
httpCon.setUseCaches(false); 
httpCon.setDefaultUseCaches(false); 
DataInputStream in = new DataInputStream(httpCon.getInputStream()); // line 8 
DataOutputStream out = new DataOutputStream(httpCon.getOutputStream()); 
// -- writing to servlet using the outputStream --` 
... ... 

Servlet сторона:

DataInputStream dis = new DataInputStream(request.getInputStream()); 
DataOutputStream out = new DataOutputStream(response.getOutputStream()); 
int numFiles = dis.readInt(); //line 3 
for(int i=0;i<numFiles;i++) 
{ 
    this.data.add(dis.readUTF()); //data is a vector that contains String types 
} 

Когда я к строке 8 на стороне клиента, он запускает HTTP GET запрос, который преформ на стороне сервлета.

Все хорошо, но когда сервлет приходит в ois.readUTF(), он бросает мне исключение, вместо того, чтобы ждать входящих данных.

+0

Какое исключение он бросает? –

+0

в сервлет я получаю исключение EOF – Netanel

ответ

0

Когда у вас есть большой объем данных, например большой файл или большое изображение/изображение хорошего качества для отправки на сервер, вы можете отправить его по частям/кускам.

Сначала сделайте подключение HTTP к серверу, а затем отправьте куски с помощью класса DataOutputStream. На стороне сервера же вам необходимо реализовать код для получения этих кусков и сделать их в один файл, как только вы получите все куски.

+0

это то, что я пытаюсь сделать, но его не работает. , когда сервлет приходит в строку ois.readUTF(), он бросает мне исключение вместо ожидания данных ... – Netanel

+0

какое исключение он выбрасывает? – Android

+0

сервлет бросает java.io.EOFException, когда он попадает в строку 3 в сервлете. p.s - я хочу загрузить строки, а не файлы ... – Netanel

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