[
https://issues.apache.org/jira/browse/AXIS2-5929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16587101#comment-16587101
]
Marti Pamies Sola commented on AXIS2-5929:
------------------------------------------
Yes, you are right, it would return
{{/opencdefhirserver/services/FHIR/Binary/4295642378}}, and that is not a JSON
document. The same behaviour happens when parameters are sent using a Query
String, currently it returns {{4295642378}},
Now I mange that situation at the Service implementation using
HttpServletRequest to get the full URL or the Query Parameters.
Thks
> 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: [email protected]
For additional commands, e-mail: [email protected]