Hi there,
I have a problem!
I must send a post multipart/form-data message from an applet to a servlet,
I wrote this piece of code:

try{
   // Create a socket to the host
   String hostname="localhost";
   int port=8080;
   InetAddress addr=InetAddress.getByName(hostname);
   Socket socket=new Socket(hostname,port);
   // Construct data
   String dataA="------AaB03x\r\n",
          dataB="Content-Disposition: form-data; name=\"submitter\"\r\n",
          dataC="\r\n",
          dataD="Larry\r\n",
          dataE="------AaB03x\r\n",
          dataF="Content-Disposition: form-data; name=\"files\"; 
filename=\"file1.txt\"\r\n",
          dataG="Content-Type: text/plain\r\n",
          dataH="\r\n",
          dataI="... contents of file1.txt ...\r\n",
          dataL="------AaB03x--\r\n";
   int len=dataA.length()+
           dataB.length()+
           dataC.length()+
           dataD.length()+
           dataE.length()+
           dataF.length()+
           dataG.length()+
           dataH.length()+
           dataI.length()+
           dataL.length();
      
   // Send header
   String path="/upload/requestupload";
   BufferedWriter wr=new BufferedWriter(new 
OutputStreamWriter(socket.getOutputStream()));
   wr.write("POST "+path+" HTTP/1.0\r\n");
   wr.write("Content-Length: "+len+"\r\n");
   wr.write("Content-Type: multipart/form-data; boundary=------AaB03x\r\n");
   wr.write("\r\n");
   // Send data
   wr.write(dataA);
   wr.write(dataB);
   wr.write(dataC);
   wr.write(dataD);
   wr.write(dataE);
   wr.write(dataF);
   wr.write(dataG);
   wr.write(dataH);
   wr.write(dataI);
   wr.write(dataL);
   wr.flush();
   
   // Get response
   BufferedReader rd=new BufferedReader(new 
InputStreamReader(socket.getInputStream()));
   String line;
   while((line=rd.readLine())!=null)
       System.out.println(line);
   wr.close();
   rd.close();
   socket.close();
}
 catch(Exception e) {e.printStackTrace();}

but this kind of error is thrown by tomcat 5.5:

24-dic-2005 1.45.27 org.apache.catalina.core.ApplicationContext log
GRAVE: error reading or saving file
java.io.IOException: Corrupt form data: premature ending
    at 
com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:205)
    at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)
    at DemoRequestUploadServlet.doPost(DemoRequestUploadServlet.java:80)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source)


I use cos.jar crated by o'reilly for reading the multipart/form-data message.
Is this an encoding problem? Can you help me? 
If you need further info.....

Thanks
Yours,
Lamberto Altieri

Reply via email to