2012-03-04 56 views
-1

我正在編寫一個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

回答

0

當你有大量的數據,如大文件或大圖像/質量好的圖像發送到服務器,那麼你可以發送它的部分/塊。

首先與服務器建立一個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