Я пишу приложение для 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()
, он бросает мне исключение, вместо того, чтобы ждать входящих данных.
Какое исключение он бросает? –
в сервлет я получаю исключение EOF – Netanel