Hi On Tue, Apr 26, 2011 at 11:11 AM, Shashank Rachamalla <[email protected]> wrote: > Hi > > i have made the following changes but the exception still gets caught: > > @Override > @POST > @Consumes(MediaType.MULTIPART_FORM_DATA) > public Response saveForm(MultipartBody body) { > System.out.println(body.getAllAttachments().size()); > return Response.status(Response.Status.OK).build(); > } > >
I have a nearly identical test resource (a single file case), please see http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFile Can you please send me the tcpmon log as an attachment ? There must be some extra space somewhere or something like that, but it can be spotted during the debugging process... Cheers, Sergey > On Tue, Apr 26, 2011 at 3:19 PM, Shashank Rachamalla < > [email protected]> wrote: > >> Hi >> >> thanks for replying. comments inline. >> >> >> On Tue, Apr 26, 2011 at 2:52 PM, Sergey Beryozkin >> <[email protected]>wrote: >> >>> Hi >>> >>> On Tue, Apr 26, 2011 at 9:58 AM, Shashank Rachamalla >>> <[email protected]> wrote: >>> > Hi >>> > >>> > Can anyone please let me know if I have done something wrong here.. >>> > >>> > *I have exposed the following simple service method ( using cxf 2.3.3 ) >>> * >>> > >>> > @Override >>> > @POST >>> > @Consumes(MediaType.MULTIPART_FORM_DATA) >>> > public Response saveForm() { >>> > System.out.println(AttachmentUtils.getAttachments(mc).size()); >>> > return Response.status(Response.Status.OK).build(); >>> > } >>> >>> I think the problem might be related to the fact you are calling >>> >>> AttachmentUtils.getAttachments(mc) directly, I'm assuming 'mc' is >>> referring to injected MessageContext. >>> >>> yes, mc is referring to injected MessageContext >> >> >>> I can actually see few tests where AttachmentUtils is called directly >>> in the tests, ex, for simple form-data submissions: >>> >>> MultivaluedMap<String, String> data = >>> AttachmentUtils.populateFormMap(context); >>> and >>> AttachmentUtils.getMultipartBody(context) >>> >>> but may be you have to explicitly add MultipartBody as a method >>> parameter - this will ensure MultipartProvider is invoked and it does >>> some multipart/form-data related processing, so it may help. >>> >> >> fine. i will try this out now. >> >> >>> More comments inline >>> >>> > >>> > *The following is a request ( captured through tcpmon ) to the above >>> defined >>> > service method:* ( it is a form post ) >>> > >>> > POST /api/v1/rest HTTP/1.1 >>> > Host: localhost:8081 >>> > User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) >>> > Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3 >>> > Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 >>> > Accept-Language: en-us,en;q=0.5 >>> > Accept-Encoding: gzip,deflate >>> > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 >>> > Keep-Alive: 115 >>> > Connection: keep-alive >>> > Referer: http://localhost/form.html >>> > Content-Type: multipart/form-data; >>> > boundary=---------------------------91021093918280655661679102041 >>> >> >> tcpmon shows boundary on the same line. >> >> >>> Can it be a problem ? I'm not sure if the boundary parameter is shown >>> on the next line by tcpmon or actually located on the next line, which >>> is probably correct, but may be it's confusing CXF a bit ? >>> >>> > Content-Length: 345 >>> > >>> > -----------------------------91021093918280655661679102041 >>> > Content-Disposition: form-data; name="title" >>> > >>> > test >>> > -----------------------------91021093918280655661679102041 >>> > Content-Disposition: form-data; name="file"; filename="test.txt" >>> > Content-Type: text/plain >>> > >>> > file content >>> > >>> > -----------------------------91021093918280655661679102041-- >>> > >>> >>> Can it be that the extra line between 'file content' and the final >>> boundary is present ? >>> >>> > >>> > *The following is the response received for above request:* >>> > >>> > <ns1:XMLFault> >>> > <ns1:faultstring> >>> > java.io.IOException: Couldn't find MIME boundary: >>> > -----------------------------91021093918280655661679102041 >>> > </ns1:faultstring> >>> > </ns1:XMLFault> >>> > >>> > Thanks in advance ! >>> > >>> >>> Please try adding MultipartBody to the method signature and I'll do a >>> test a bit later on too, >>> >>> thanks, Sergey >>> >>> >>> > >>> > Regards, >>> > Shashank Rachamalla >>> > >>> >> >> >> >> -- >> Regards, >> Shashank Rachamalla >> > > > > -- > Regards, > Shashank Rachamalla > -- Sergey Beryozkin Application Integration Division of Talend http://sberyozkin.blogspot.com
