2012-03-04 4 views
-1

J'écris une application Android, qui a une fonction pour télécharger des données à une servlet, et quand je dis des données, je veux dire beaucoup de chaînes. La servlet fonctionne sous Apache Tomcat v6 et est écrite en Java. Partout où je regarde, je vois qu'une façon de le faire est d'utiliser HttpUrlConnection.Comment envoyer une grande quantité de données à la servlet

côté client:

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 --` 
... ... 

côté 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 
} 

Quand je rentre à la ligne 8 du côté client, il déclenche une demande HTTP GET, que préformes côté servlet.

Tout va bien, mais quand le servlet arrive au ois.readUTF(), il me lance une exception, au lieu d'attendre les données entrantes.

+0

Quelle exception est-ce qu'il lance? –

+0

dans le servlet je reçois une exception EOF – Netanel

Répondre

0

Lorsque vous avez une grande quantité de données, comme un gros fichier ou une grande image/image de bonne qualité à envoyer au serveur, vous pouvez l'envoyer en pièces/morceaux.

Commencez par établir une connexion HTTP avec le serveur, puis envoyez des blocs avec la classe DataOutputStream. Du côté serveur, vous devez implémenter le code pour recevoir ces morceaux et les faire dans un fichier une fois que vous avez tous les morceaux.

+0

c'est ce que je suis en train de faire, mais ça ne fonctionne pas. quand la servlet arrive à la ligne ois.readUTF() elle me jette une exception au lieu d'attendre des données ... – Netanel

+0

quelle exception cela jette-t-il? – Android

+0

la servlet lève une exception java.io.EOFException lorsqu'elle arrive à la ligne 3 du servlet. p.s - Je veux télécharger des chaînes, pas des fichiers ... – Netanel

Questions connexes