Как отправить большой объем данных в сервлет - PullRequest
0 голосов
/ 05 марта 2012

Я пишу приложение для 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 --`
... ...

Сторона сервлета:

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(), он выдает мне исключение, вместо ожидания входящих данных.

1 Ответ

0 голосов
/ 05 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...