You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Kishanthan Thangarajah (JIRA)" <ji...@apache.org> on 2013/04/12 15:44:16 UTC

[jira] [Commented] (AXIS2-5489) Encoding GET parameters with '+' character in generated REST clients with WSDL2Java

    [ https://issues.apache.org/jira/browse/AXIS2-5489?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13630066#comment-13630066 ] 

Kishanthan Thangarajah commented on AXIS2-5489:
-----------------------------------------------

OK, I can now reproduce this. It was a good debugging session.

Here is my observation.

When sending the character "+" in any of the following form, i.e. in URL, Path or with Query, this character is treated as the legal character. It will not be encoded, because in WSDL2Constants.java, this character is added under legal characters list. In there, it is also mentioned that the set of legal characters are taken from [1]. So I don't see any issue on axis2 client side, regarding this so far.

But I think the issue is at server side. When we send the "+" character in the REST request, this is getting treated/changed with " " value. I managed to find the code segment which does this change also. It is in URIEncoderDecoder#decode method, where the charactor "+" is treated specially. Going into this further, I found that this is added as a fix to [2].

Thanks,
Kishanthan.
[1] http://lists.w3.org/Archives/Public/www-ws-desc/2007Feb/0039.html
[2] https://issues.apache.org/jira/browse/AXIS2-4989
                
> Encoding GET parameters with '+' character in generated REST clients with WSDL2Java
> -----------------------------------------------------------------------------------
>
>                 Key: AXIS2-5489
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5489
>             Project: Axis2
>          Issue Type: Bug
>          Components: kernel, transports
>    Affects Versions: 1.6.2
>         Environment: Ubuntu
>            Reporter: Miguel Ángel Francisco Fernández
>            Priority: Blocker
>              Labels: +, GET, REST, encode,
>             Fix For: 1.6.2
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Using the wsdl2java tool to generate a Java client to access a REST web service described with a WSDL 2.0, the generated client does not encode the symbol '+' in GET parameters.
> For example, if I have an URL "/get_url", and I set the parameter "param" to "x+x", the symbol "+" is not encoded, and therefore it is interpreted as a space on the server ("x x"). If I try to send the parameter encoded, i.e., "%2B", then "%252B" is received in the server.
> Therefore, it is not possible to send the '+' symbol in a GET parameter.
> I guess that it is caused by the definition of the field LEGAL_CHARACTERS_IN_QUERY in the interface org.apache.axis2.description.WSDL2Constants, which is set to "-._~!$'()*+,;=:@/?"

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org