Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E1219200B95 for ; Tue, 27 Sep 2016 15:57:22 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id DFD11160AE7; Tue, 27 Sep 2016 13:57:22 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 33632160AD3 for ; Tue, 27 Sep 2016 15:57:22 +0200 (CEST) Received: (qmail 90813 invoked by uid 500); 27 Sep 2016 13:57:21 -0000 Mailing-List: contact issues-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list issues@cxf.apache.org Received: (qmail 90752 invoked by uid 99); 27 Sep 2016 13:57:21 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Sep 2016 13:57:21 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 1408B2C2A62 for ; Tue, 27 Sep 2016 13:57:21 +0000 (UTC) Date: Tue, 27 Sep 2016 13:57:21 +0000 (UTC) From: "Sergey Beryozkin (JIRA)" To: issues@cxf.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CXF-7071) HttpServletRequest.getParameter only get String from query not both posted form data MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Tue, 27 Sep 2016 13:57:23 -0000 [ https://issues.apache.org/jira/browse/CXF-7071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15526209#comment-15526209 ] Sergey Beryozkin commented on CXF-7071: --------------------------------------- Neal, CXF does not implement HttpServletRequest - it merely wraps it, the underlying servlet container is obviously not understanding that it needs to cache the form payload while CXF itself can not do it by default either because it will immediately break the JAX-RS service code which may try to read the form payload from InputStream - this stream will become empty if HttpServletRequest caches the form payload into the parameters. FYI, this is not a new request. CXF Bus can be set with a "cache.http.request.parameters" property: https://github.com/apache/cxf/blob/master/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java#L301 Enable it and you will see CXF effectively asking HttpServletRequest pre-reading the form payload - but as I said it might cause the side-effects. Either way, please confirm setting that property works > HttpServletRequest.getParameter only get String from query not both posted form data > ------------------------------------------------------------------------------------ > > Key: CXF-7071 > URL: https://issues.apache.org/jira/browse/CXF-7071 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Affects Versions: 3.1.7 > Reporter: Neal Hu > Fix For: 3.1.8 > > > The http request: > POST /dubbott-demo-provider/v1.0/users/beanparam HTTP/1.1 > HOST: localhost:8080 > accept: text/plain > content-type: application/x-www-form-urlencoded > content-length: 12 > pageIndex=99 > The resource method returns null: > {code:java} > public String beanParam(@Context HttpServletRequest req, String ak) { > String pageIndex = req.getParameter("pageIndex") > return pageIndex; > } > {code} > From the servlet 3.1 API doc: > String javax.servlet.ServletRequest.getParameter(String name) > Returns the value of a request parameter as a String, or null if the parameter does not exist. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data. > if we add below servlet filter: > {code:java} > public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { > System.out.println(request.getParameter("pageIndex") ); > chain.doFilter(request, response); > } > {code} > The output is "99" the response is the same "99". > As a conclusion the CXF HttpServletRequest doesn't comply the Servlet 3.1 API Spec. -- This message was sent by Atlassian JIRA (v6.3.4#6332)