multipart/form-java

multipart/form-java

am 27.12.2005 17:57:37 von Lamberto Altieri

------=_NextPart_000_0017_01C60B0F.05DA5ED0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

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=3D"localhost";
int port=3D8080;
InetAddress addr=3DInetAddress.getByName(hostname);
Socket socket=3Dnew Socket(hostname,port);
// Construct data
String dataA=3D"------AaB03x\r\n",
dataB=3D"Content-Disposition: form-data; =
name=3D\"submitter\"\r\n",
dataC=3D"\r\n",
dataD=3D"Larry\r\n",
dataE=3D"------AaB03x\r\n",
dataF=3D"Content-Disposition: form-data; name=3D\"files\"; =
filename=3D\"file1.txt\"\r\n",
dataG=3D"Content-Type: text/plain\r\n",
dataH=3D"\r\n",
dataI=3D"... contents of file1.txt ...\r\n",
dataL=3D"------AaB03x--\r\n";
int len=3DdataA.length()+
dataB.length()+
dataC.length()+
dataD.length()+
dataE.length()+
dataF.length()+
dataG.length()+
dataH.length()+
dataI.length()+
dataL.length();
=20
// Send header
String path=3D"/upload/requestupload";
BufferedWriter wr=3Dnew 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=3D------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();
=20
// Get response
BufferedReader rd=3Dnew BufferedReader(new =
InputStreamReader(socket.getInputStream()));
String line;
while((line=3Drd.readLine())!=3Dnull)
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.(MultipartParser.java=
:205)
at =
com.oreilly.servlet.MultipartRequest.(MultipartRequest.java:222)
at DemoRequestUploadServlet.doPost(DemoRequestUploadServlet.jav a: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.internalDoFi lter(Applicat=
ionFilterChain.java:252)
at =
org.apache.catalina.core.ApplicationFilterChain.doFilter(App licationFilte=
rChain.java:173)
at =
org.apache.catalina.core.StandardWrapperValve.invoke(Standar dWrapperValve=
..java:213)
at =
org.apache.catalina.core.StandardContextValve.invoke(Standar dContextValve=
..java:178)
at =
org.apache.catalina.core.StandardHostValve.invoke(StandardHo stValve.java:=
126)
at =
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo rtValve.java:=
105)
at =
org.apache.catalina.core.StandardEngineValve.invoke(Standard EngineValve.j=
ava:107)
at =
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd apter.java:14=
8)
at =
org.apache.coyote.http11.Http11Processor.process(Http11Proce ssor.java:856=
)
at =
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHand ler.processCo=
nnection(Http11Protocol.java:744)
at =
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo lTcpEndpoint.=
java:527)
at =
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt( LeaderFollowe=
rWorkerThread.java:80)
at =
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru n(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?=20
If you need further info.....

Thanks
Yours,
Lamberto Altieri

------=_NextPart_000_0017_01C60B0F.05DA5ED0--

Re: multipart/form-java

am 28.12.2005 02:21:34 von Martin Cooper

------=_Part_59136_33526853.1135732894626
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

I would recommend that you use something like Commons HttpClient to
construct and make the request, instead of trying to do so manually, as you
are now. See:

http://jakarta.apache.org/commons/httpclient/

You might also want to use Commons FileUpload to parse the request, instead
of the O'Reilly package, so that you don't get tangled up in the strange
licensing conditions of the O'Reilly package. See:

http://jakarta.apache.org/commons/fileupload/

--
Martin Cooper


On 12/27/05, Lamberto Altieri wrote:
>
> 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=3D"localhost";
> int port=3D8080;
> InetAddress addr=3DInetAddress.getByName(hostname);
> Socket socket=3Dnew Socket(hostname,port);
> // Construct data
> String dataA=3D"------AaB03x\r\n",
> dataB=3D"Content-Disposition: form-data; name=3D\"submitter\"\r=
\n",
> dataC=3D"\r\n",
> dataD=3D"Larry\r\n",
> dataE=3D"------AaB03x\r\n",
> dataF=3D"Content-Disposition: form-data; name=3D\"files\";
> filename=3D\"file1.txt\"\r\n",
> dataG=3D"Content-Type: text/plain\r\n",
> dataH=3D"\r\n",
> dataI=3D"... contents of file1.txt ...\r\n",
> dataL=3D"------AaB03x--\r\n";
> int len=3DdataA.length()+
> dataB.length()+
> dataC.length()+
> dataD.length()+
> dataE.length()+
> dataF.length()+
> dataG.length()+
> dataH.length()+
> dataI.length()+
> dataL.length();
>
> // Send header
> String path=3D"/upload/requestupload";
> BufferedWriter wr=3Dnew 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=3D------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=3Dnew BufferedReader(new InputStreamReader(
> socket.getInputStream()));
> String line;
> while((line=3Drd.readLine())!=3Dnull)
> 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.(
> MultipartParser.java:205)
> at com.oreilly.servlet.MultipartRequest.(MultipartRequest.java
> :222)
> at DemoRequestUploadServlet.doPost(DemoRequestUploadServlet.jav a: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.internalDoFi lter(
> 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$Http11ConnectionHand ler.processCo=
nnection
> (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.ru n(
> 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
>
>

------=_Part_59136_33526853.1135732894626--