if you introspect variables, the fields are not populated in HttpServletRequest object. The variables are added to the Camel Exchange Header. This may be something done within camel-jetty or one of the underlying libraries.
the field are populated in the message header - but at that point, they are intermingled with Camel Headers, HTTP Headers Accept = text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding = gzip, deflate, br Accept-Language = en-US,en;q=0.9 Cache-Control = max-age=0 CamelHttpMethod = POST CamelHttpPath = CamelHttpQuery = null CamelHttpServletRequest = Request(POST //localhost:8080/)@37bc1f86 CamelHttpServletResponse = HTTP/1.1 200 CamelHttpUri = / CamelHttpUrl = http://localhost:8080/ CamelServletContextPath = / Connection = keep-alive Content-Length = 20 Content-Type = application/x-www-form-urlencoded Host = localhost:8080 login = aa Origin = http://localhost:8080 password = bb Referer = http://localhost:8080/ sec-ch-ua = "Not.A/Brand";v="8", "Chromium";v="114", "Microsoft Edge";v="114" sec-ch-ua-mobile = ?0 sec-ch-ua-platform = "Windows" Sec-Fetch-Dest = document Sec-Fetch-Mode = navigate Sec-Fetch-Site = same-origin Sec-Fetch-User = ?1 Upgrade-Insecure-Requests = 1 User-Agent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43 ---------------- End of Message Headers I couldn't see an easy method to convert username=something&password=something (that can possibly be a workaround). I would say go ahead and open a JIRA ; to see if this is really a bug. I did see a slightly different behaviour when I added disableStreamCache=true; but that did not seem to change other parts. I did try changing it to a multi-part form and then it showed up as multiple parts attached - but that would mean changing your approach completely. ચિરાગ/चिराग/Chirag ------------------------------------------ Sent from My Gmail Account On Wed, Jun 14, 2023 at 3:14 AM Fyodor Kravchenko <feddkr...@hotmail.com> wrote: > > Hi Chirag, yeah that exactly is the question - it shouldn't be that way. > > If we change Camel version in the pom.xml to Camel 2.24, it'll work as > expected: the POST payload will be parsed into java.util.Map and the > Json will be generated (instead of "null"). > > So the question is -- how do i fix it for camel 3.20.4? > > On 13.06.2023 18:04, Chirag wrote: > > Hi Fyodor, > > I ran it in IntelliJ thru 3.20.4 > > > > after submitting page - i got > > > > json: null, and string:login=usrename&password=password > > > > > > ચિરાગ/चिराग/Chirag > > ------------------------------------------ > > Sent from My Gmail Account > > > > On Mon, Jun 12, 2023 at 7:35 AM Fyodor Kravchenko <feddkr...@hotmail.com> > > wrote: > >> Hello people, > >> > >> any ideas how to fix the issue below? > >> > >> -- fedd > >> > >> On 09.06.2023 18:15, Fyodor Kravchenko wrote: > >>> Hello, > >>> > >>> I've used to rely on this function in older Camel, when I was able to > >>> deserialize a regular web form POST stream into a generic > >>> java.util.Map, I mean, this used to parse the form data (not > >>> multipart, just regular) and convert into a Map: > >>> > >>> Map map = http.getBody(Map.class); > >>> > >>> This is my test code snippet that I compile and run on Java 19 of > >>> GraalVM: > >>> > >>> ``` > >>> > >>> HttpMessage http = > >>> exchange.getIn(HttpMessage.class); > >>> HttpServletRequest request = http.getRequest(); > >>> String method = request.getMethod(); > >>> if ("POST".equals(method) || > >>> "PUT".equals(method)) { > >>> Map map = http.getBody(Map.class); > >>> String string = http.getBody(String.class); > >>> http.setHeader(Exchange.CONTENT_TYPE, > >>> "text/plain"); > >>> http.setBody("json: " + > >>> mapper.writeValueAsString(map) + ", and string:" + string); > >>> } else { > >>> http.setHeader(Exchange.CONTENT_TYPE, > >>> "text/html"); > >>> http.setBody(this.getClass().getResourceAsStream("form.html")); > >>> } > >>> ``` > >>> > >>> I've created a test project to make sure it works on Camel 2.24 and > >>> doesn't in 3.20.4: > >>> > >>> https://github.com/fedd/cameljettyformmap/tree/main/cameljettyformmap > >>> > >>> I had to add `javax.activation` for the 2.24 version to run, but > >>> unfortunately that didn't fix the 3.20.4 (See the pom.xml in the > >>> github link) > >>> > >>> What do I have to do to make it work in 3.20.4? > >>> > >>> $ java --version > >>> openjdk 19.0.1 2022-10-18 > >>> OpenJDK Runtime Environment GraalVM CE 22.3.0 (build > >>> 19.0.1+10-jvmci-22.3-b08) > >>> OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build > >>> 19.0.1+10-jvmci-22.3-b08, mixed mode, sharing) > >>>