如何向servlet发送大量数据

如何向servlet发送大量数据

问题描述:

我正在编写一个Android应用程序,它具有将数据上传到servlet的功能,当我说数据时,我的意思是很多字符串。该servlet在Apache Tomcat v6中运行,并以Java编写。在我看来,我看到的一种做法是使用HttpUrlConnection如何向servlet发送大量数据

客户端:

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()时,它引发了一个异常,而不是等待传入的数据。

+0

它抛出什么异常? – 2012-03-04 22:26:18

+0

在servlet中,我得到一个EOF异常 – Netanel 2012-03-05 12:48:10

当你有大量的数据,如大文件或大图像/质量好的图像发送到服务器,那么你可以发送它的部分/块。

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

+0

这是我想要做的,但它不工作。 当servlet来到行ois.readUTF()它抛出一个异常,而不是等待数据... – Netanel 2012-03-05 12:50:15

+0

它抛出什么异常? – Android 2012-03-05 13:21:48

+0

servlet在servlet中的第3行时引发java.io.EOFException。 p.s - 我想上传字符串,而不是文件... – Netanel 2012-03-05 16:38:14