Axis2中POJO参数中空格的编码

时间:2013-01-05 09:56:44

标签: web-services tomcat axis2

我创建了一个非常简单的服务,只是将一些文本发送到控制台。该服务只是一个带有方法echo的POJO,只有一个参数:

public class EchoTest
{
    public void echo(String myMessage)
    {
        System.out.println(myMessage);
    }
}

这是来自services.xml:

<service name="EchoTest">
    <description>Echo test</description>
    <parameter name="ServiceClass">EchoTest</parameter>

     <operation name="echo">
        <messageReceiver  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>
</service>

此外,我使用一个非常简单的HTML表单将数据提交给服务:

<html>
<body>
    <form method="post" target="responseFrame" action="../../services/EchoTest/echo">
        <input name="myMessage" type="text">
        <input value="Send" type="submit"/>         
    </form>
    <iframe width=500 height=500 name="responseFrame"></iframe>
</body>
</html>

我遇到的问题是空格被替换为'+'。例如,如果我输入如下消息:

Hey you & you - # % @

结果如下:

Hey+you+&+you+-+#+%+@

我是否必须以某种方式对其进行编码,或者它是否应该像这样?或许这是一个设置问题?我使用Tomcat作为Web容器。有关信息,我在Tomcat中使用servlet过滤器,例如过滤IP地址,在那里我可以看到myMessage参数看起来没问题,没有+符号。

1 个答案:

答案 0 :(得分:0)

事实证明,问题实际上是在Axis2本身。我不确定,但我使用的版本是从2009年10月发布的1.5.1版。我的错误是我没有发现任何错误报告。可能是它很快被修复了,我很不幸。

升级到最新版本的Axis2解决了这个问题。