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