【问题标题】:How to send large amount of data to servlet如何向servlet发送大量数据
【发布时间】:2012-03-04 21:54:50
【问题描述】:

我正在编写一个 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() 时,它会向我抛出异常,而不是等待传入的数据。

【问题讨论】:

  • 抛出了什么异常?
  • 在 servlet 中我得到一个 EOF 异常

标签: android tomcat servlets


【解决方案1】:

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

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

【讨论】:

  • 这是我想要做的,但它不起作用。当 servlet 到达 ois.readUTF() 行时,它会抛出异常而不是等待数据...
  • servlet 在到达 servlet 的第 3 行时抛出 java.io.EOFException。 p.s - 我想上传字符串,而不是文件...
猜你喜欢
  • 2013-11-28
  • 1970-01-01
  • 2019-10-25
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多