[ https://issues.apache.org/jira/browse/AXIS2-5929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16584800#comment-16584800 ]
Andreas Veithen commented on AXIS2-5929: ---------------------------------------- {{getRequestURI}} would return {{/opencdefhirserver/services/FHIR/Binary/4295642378}}, but that doesn't look like JSON, right? > REST Services URL GET json request not working > ---------------------------------------------- > > Key: AXIS2-5929 > URL: https://issues.apache.org/jira/browse/AXIS2-5929 > Project: Axis2 > Issue Type: Improvement > Components: json > Affects Versions: 1.7.8 > Reporter: Marti Pamies Sola > Priority: Minor > Attachments: AbstractJSONOMBuilder.java, > AbstractJSONOMBuilder.java.patch > > > At a REST services, I do not receive HTTP GET requests when content-type is > json, and parameters are at request URL path (not as Query string). Let me > explain in detail: > I am implementing a REST services according to [HL7 > FHIR|[http://www.hl7.org/fhir/],] that must be able to return content both on > xml and json (depending on http header content-type), once an HTTP GET > request is received. Keys for the information to be returned can be provided > both directly at the request URL path or as a Query String: > * Keys at URL path: > {color:#505050}[http://localhost:8080/opencdefhirserver/services/FHIR/Binary/4295642378]{color} > * Keys as Query string: > {color:#505050}[http://localhost:8080/opencdefhirserver/services/FHIR/Binary?id4295642378|http://localhost:8080/opencdefhirserver/services/FHIR/Binary/4295642378]{color} > Where, FHIR is my service; Binary is the axis2 operation to be executed > (mapping to a FHIR resource); and {color:#505050}4295642378{color} the > resource id. > Providing keys as Query String work properly with xml and json, but providing > key at URL path just work with xml, on json I get the following exception: > "_No JSON message received through HTTP GET or POST"_ > I've been reviewing source code and I guess the issue comes form this > fragment of code at AbstractJSONOMBuilder.java line 85: > > {code:java} > // if ((index = requestURL.indexOf("=")) > 0) { > jsonString = requestURL.substring(index + 1); > reader = new StringReader(jsonString); > } else { > throw new AxisFault("No JSON message received through HTTP > GET or POST"); > } > {code} > As it only accepts parameters as Query String, and when not provided it raise > an exception. > I propose the following modification, where if not Query String is provided, > it considers full request URL as input json. > {code:java} > // if ((index = requestURL.indexOf("=")) > 0) { > jsonString = requestURL.substring(index + 1); > reader = new StringReader(jsonString); > } else { > /* > * MARTI PAMIES SOLA > * Get JSON message from request URI if not present as > parameter. > * To be able to response to full URL requests > */ > HttpServletRequest httpServeltRqst > =(HttpServletRequest)messageContext.getProperty("transport.http.servletRequest"); > String requestParam=httpServeltRqst.getRequestURI(); > if (!(requestParam.equals(""))) { > jsonString = requestParam; > reader = new StringReader(jsonString); > }else { > throw new AxisFault("No JSON message received through > HTTP GET or POST"); > } > } > {code} > I've test locally and it work for me, so I propose to include modification at > next release. Attached is the new AbstractJSONOMBuilder.java file and also > the svn patch. > Hope useful. > Thanks, > Martí > -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org For additional commands, e-mail: java-dev-h...@axis.apache.org