如何将大量数据发送到servlet

时间:2012-03-04 21:54:51

标签: android tomcat servlets

我正在编写一个Android应用程序,它具有将数据上传到servlet的功能,当我说数据时,我指的是很多字符串。 servlet在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请求,该请求会预先形成servlet端。

一切都很好,但是当servlet到达ois.readUTF()时,它会抛出异常,而不是等待传入的数据。

1 个答案:

答案 0 :(得分:0)

当您有大量数据(如大文件或大图像/高质量图像)发送到服务器时,您可以将其发送到部分/块中。

首先与服务器建立HTTP连接,然后使用DataOutputStream类发送数据块。在服务器端,你需要实现接收这些块的代码,并在获得所有块后将它们放在一个文件中。