Win a copy of Think Java: How to Think Like a Computer Scientist this week in the Java in General forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Error while parsing simple plain text fields in multipart form at Restlet 1.1

 
Igor Kravchenko
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi everybody!
I have some troubles with parsing simple plain-text form fields in Restlet v1.1

The form looks like

I've tried to parse multipart request from my resource as in the example at http://wiki.restlet.org/docs_1.1/13-restlet/28-restlet/64-restlet.html page (with some simplification):



The following error occurs:

java.lang.NullPointerException
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:592)
at org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:618)
at org.apache.commons.fileupload.MultipartStream.skipPreamble(MultipartStream.java:637)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:984)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:965)
at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
at org.restlet.ext.fileupload.RestletFileUpload.parseRequest(RestletFileUpload.java:104)
at myPackage.MyResource.myPostRepresentation(MyResource.java:LINE X)


Also, when I've tried pure Apache code as mentioned at http://commons.apache.org/fileupload/using.html page instead of code above:



, I have following error:

org.apache.commons.fileupload.FileUploadException: Stream closed
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:385)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at myPackage.MyResource.myPostRepresentation(MyResource.java:LINE X)
...
Caused by: java.io.IOException: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:325)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:592)
at org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:618)
at org.apache.commons.fileupload.MultipartStream.skipPreamble(MultipartStream.java:637)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:984)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:965)
at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
... 54 more
Caused by:
java.io.IOException: Stream closed
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:325)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:592)
at org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:618)
at org.apache.commons.fileupload.MultipartStream.skipPreamble(MultipartStream.java:637)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:984)
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:965)
at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at myPackage.MyResource.myPostRepresentation(MyResource.java:LINE X)


At the same time, i have successfully parsed the same request with the help of the simpliest servlet without Restlet wrapper.

My question is - Does Restlet 1.1 support parsing of simple text fields from forms encrypted as 'multipart/form-data'?
And if it does, any ideas what I have been doing wrong?

Thanks!
 
Ivan Krizsan
Ranch Hand
Posts: 2198
1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi!
Have you set the MIME type(content type on the Restlets page) of the HTTP request that contains the form to "multipart/form-data"?
Setting that type in the form is not enough.
Best wishes!
 
Igor Kravchenko
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ivan Krizsan wrote:Hi!
Have you set the MIME type(content type on the Restlets page) of the HTTP request that contains the form to "multipart/form-data"?
Setting that type in the form is not enough.
Best wishes!

Thank you for your answer.
Not sure I understand.
I have mediaType from my request

equal to
multipart/form-data; boundary=---------------------------24464570528145
, where numbers of course vary from request to request.

I have the same content type when I test multipart form at simple servlet

Also,

returns true
, where ServletFileUpload is from org.apache.commons.fileupload.servlet package, and
ServletCall is from com.noelios.restlet.ext.servlet package.
 
Ivan Krizsan
Ranch Hand
Posts: 2198
1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi!
It looks like the MIME type is correctly set.
Have you managed to successfully re-make the unchanged example to which you provided the link?
This sounds rather interesting and I hope I will have some time in the next few days to take a look. If I find something out, I will let you know.
Best wishes!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic